Re: [VB6 ] 問題關於利用RS-232來傳送資料

看板Visual_Basic作者 (大偵探)時間18年前 (2006/12/25 09:08), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《SmallBeeWayn (喵喵叫的蜜蜂貓)》之銘言: : ※ 引述《fbi1115 (大偵探)》之銘言: : : 小弟 : : 利用 VB 與 RS232 : : 來做兩台電腦的傳輸動作,但是遇到了一個問題是每次都只可以傳文字檔 : : 不可以傳圖片或音樂檔,可否請問一下小弟遇到的問題是什麼 : 文字檔是屬於Text形式 : 圖片檔或是音樂檔都是Binary形式 : : MSComm1.Output = SendFileName & vbCrLf : : MSComm1.Output = CStr(SendFileLen) & vbCrLf : 我不太理解這樣傳的意義.... : 而且RS232通常只用vbCr而非vbCrLf : : For i = 1 To SendFileLen : : Get fn, , SendFileLen : : MSComm1.Output = Chr(SendData) : 你可以嘗試一下Asc(Chr(100))跟Asc(Chr(200))的結果 : 由於Chr(100) = "d" 所以可以正確Asc回來 : 但是200不是正確的碼值, Asc回來是0 : 你如果改ChrB或許搞不好能夠傳 : 但是最正規的用法應該是丟給位元組陣列才對 : : ----------- : : 以下是接收部分 : : --------------- : MSComm1.InputMode有指定為comInputModeBinary嗎? : 至於你接收端的程式也是完全當字串來處理 : 當然是傳不了圖片的 : ========================== : 建議你閱讀MSDN「使用 Communications 控制項」一章 : 尤其是「管理接收和傳送緩衝區管理接收和傳送緩衝區」一節 : =================以下引用================= : 管理接收和傳送緩衝區 : 如上面所說明的,在開啟連接埠以後,接收和傳送緩衝區就會被建立。接收和傳送緩衝區 : 用來儲存傳入的資料和傳出的資料。為了讓使用者能夠管理這些緩衝區,Communications : 控制項提供了一系列的屬性。利用這些屬性,您將可以放置或擷取資料、傳回每個緩衝區 : 大小、處理文字和二進位數資料。如何正確地管理這些緩衝區是 Communications 控制項 : 應用中的一個重要課題。 : 接收緩衝區 : Input 屬性被用來儲存和接收從接收緩衝區擷取的資料。例如,如果您希望從接收緩衝區 : 擷取資料,並將其顯示在一個文字方塊中,則可以使用下面的程式碼: : TxtDisplay.Text = MSComm1.Input : 如果您需要擷取接收緩衝區中的所有內容,就必須將 InputLen 屬性設定為 0。這可以在 : 設計階段或執行階段設定。 : InputMode 屬性可以設定為如下的 Visual Basic 常數:comInputModeText 或 : comInputModeBinary,即您可分別以文字或二進位格式接收傳入的資料。此資料將以字 : 串或二進位資料的位元組陣列之形式存取。ANSI 字元集合的資料應使用 : comInputModeText;而對其它資料,比如了包含控制字元、Nulll值等的資料,l應使用 : comInputModeBinary。 : 每接收到一個位元組,該位元組都會被移入接收緩衝區,同時 InBufferCount 屬性值會 : 加一。此時,就可用 InBufferCount 屬性來檢查接收緩衝區中位元組的數目。將此屬性 : 的值設定為 0,即可清空接收緩衝區。 : 傳送緩衝區 : Output 屬性被用來對傳送緩衝區發出指令和資料。 : 與 Input 屬性類似,資料可以用文字或二進位格式傳送。Output 屬性必須用字串傳送文 : 字,或用位元組陣列傳送二進位資料。 : 您可用 Output 屬性傳送指令、文字字串或位元組陣列資料。例如: : '傳送 AT 指令 : MSComm1.Output = "ATDT 555-5555" : '傳送文字字串 : MsComm1.Output = " This is a text string " : '傳送位元組陣列資料 : MSComm1.Output = Out : 如前面提到的,每傳送一行都必須以 Return 鍵 (vbCr)結束。在上例中,Out 被定義為 : 位元組陣列變數:Dim Out() As Byte。假如它是字串變數,則應定義為:Dim Out() As : String。 : 您可用 OutBufferCount 屬性監看傳送緩衝區中的位元組數目。將該值設定為 0 即可清 : 空傳送緩衝區。 : =================以上引用================= : 其實VB提供的RS232傳輸介面有一些問題 : 尤其是沒辦法等時傳輸, 以及會掉資料的問題 : 雖然部份原因是因為RS232本身就是很舊的技術 : 但是一部分還是能靠第三方介面來解決的 可否請大大就針對一下我的文章幫我修改一下,因為我是vb的新手, 所以可以麻煩你幫我對我的程式碼修改一下好ㄇ -- ∵~★.°☆∵。*∵~★.°☆∵。  ╭══╮ ╭╧╮╭╧╮╭╧╮ ╭╯■■║═║灌║║水║║車│ ╰⊙═⊙╯ ╘∞╛╘∞╛╘∞╛ ☆.°∴°☆﹒﹒‧☆°∴°☆.﹒ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.162.211

12/25 14:45, , 1F
不要...
12/25 14:45, 1F
文章代碼(AID): #15ZoHsUU (Visual_Basic)
文章代碼(AID): #15ZoHsUU (Visual_Basic)