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

看板Visual_Basic作者 (喵喵叫的蜜蜂貓)時間19年前 (2006/12/22 19:01), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《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本身就是很舊的技術 但是一部分還是能靠第三方介面來解決的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.204.46

12/23 18:23, , 1F
RS232有九條線,多數設備卻只用三條.當然沒辦法完成某些事.
12/23 18:23, 1F

12/23 18:24, , 2F
但其實那些指令影響不大,而且都可用其它方法解決.
12/23 18:24, 2F
文章代碼(AID): #15YxiAXH (Visual_Basic)
文章代碼(AID): #15YxiAXH (Visual_Basic)