1樓:匿名使用者
vb可以使用mscomm控制元件來實現串列埠通訊。
mscomm 控制元件通過串列埠傳輸和接收資料,為應用程式提供序列通訊功能。
mscomm 控制元件提供下列兩種處理通訊的方式:
事件驅動通訊是處理序列端**互作用的一種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在 carrier detect (cd) 或
request to send (rts) 線上一個字元到達或一個變化發生時。在這些情況下,可以利用 mscomm 控制元件的 oncomm
事件捕獲並處理這些通訊事件。oncomm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 commevent
屬性。oncomm 事件
無論何時當 commevent 屬性的值變化時,就產生 oncomm 事件,標誌發生了一個通訊事件或一個錯誤。
oncomm 事件示例
下例說明如何處理通訊錯誤和事件。可以在相關的 case 語句之後插入**來處理特定的錯誤或事件。
private sub mscomm_oncomm()
select case mscomm1.commevent
' 錯誤
case comeventbreak ' 收到 break。
case comeventcdto ' cd (rlsd) 超時。
case comeventctsto ' cts timeout。
case comeventdsrto ' dsr timeout。
case comeventframe ' framing error
case comeventoverrun '資料丟失。
case comeventrxover '接收緩衝區溢位。
case comeventrxparity ' parity 錯誤。
case comeventtxfull '傳輸緩衝區已滿。
case comeventdcb '獲取 dcb] 時意外錯誤
' 事件
case comevcd ' cd 線狀態變化。
case comevcts ' cts 線狀態變化。
case comevdsr ' dsr 線狀態變化。
case comevring ' ring indicator 變化。
case comevreceive ' 收到 rthreshold # of chars.
case comevsend ' 傳輸緩衝區有 sthreshold 個字元
case comeveof ' 輸入資料流中發現 eof 字元
end select
end sub
mscomm 控制元件有很多重要的屬性,但首先必須熟悉幾個屬性。
output 屬性,往傳輸緩衝區寫資料流。該屬性在設計時無效,在執行時為只讀。
說明output 屬性可以傳輸文字資料或二進位制資料。用 output 屬性傳輸文字資料,必須定義一個包含一個字串的
variant。傳送二進位制資料,必須傳遞一個包含位元組陣列的 variant 到
output 屬性。
正常情況下,如果傳送一個 ansi 字串到應用程式,可以以文字資料的形式傳送。如果傳送包含嵌入控制字元、null 字元等等的資料,要以二進位制形式傳送。
以下**是在開啟com口後,能以二進位制形式或字串傳送指令:
option explicit
dim sjbyt() as byte
private sub command1_click() '2進位制傳送
redim sjbyt(1 to 10) '設定為10個元素
sjbyt(1) = &h31
sjbyt(2) = &h32
sjbyt(3) = &h12
sjbyt(4) = &h31
sjbyt(5) = &h32
sjbyt(6) = &h33
sjbyt(7) = &h34
sjbyt(8) = &h35
sjbyt(9) = &h36
sjbyt(10) = &h37
mscomm1.output = sjbyt '此命令執行一次傳送10位元組
end sub
private sub command2_click()'文字字串傳送
dim sjstr as string
sjstr = "dim sjstr as string"
mscomm1.output = sjstr '此命令執行字串傳送
end sub
2樓:匿名使用者
其實很簡單,宣告一個變數陣列其型別為byte。然後將你要的資料逐一賦值到這個陣列,將mscomm控制元件序列模式屬性:inputmode 設為 二進位制模式,也就是值為1的那個,然後將這個變數陣列輸出到 output 就行了。
如:dim da(4) as byte
da(0)=&haa
da(1)=&haa
da(2)=&h04
da(3)=&h02
da(4)=.....
mscomm1.output=da()
*注意在vb中十六進位制要用 &h 開頭表示發接為二進位制傳送,自然接收也是一樣的,所以接收的也應該是一個byte型別的不定變數陣列,接收後可用 ubound 語句來獲取位元組數,接收的資料以 變數(下標) 形式取得,不能將陣列直接賦值於一個變數或控制元件的字元屬性中。如:
dim ad() as byte
dim ik as long
ad=mscomm.input
for ik=0 to ubound(ad)text1.text=text1.text & chr(ad(ik))
next
3樓:匿名使用者
用createfile等
4樓:串列埠通訊之家
微控制器+rs232通訊模組實現modbus rtu串列埠通訊
筆記本用rs232轉usb,開機不能自動識別此串列埠。需要重新拔插一下,才能識別。如果實現開機自動識別?謝謝
是軟體發現不了串列埠,還是在裝置管理器裡面看不到,如果裝置管理器看不到你可能是驅動問題 重灌驅動 微型usb高速光隔 rs 232 485 422 usb232gh3 高速光隔usb rs 232 485 422轉換器 ftdi驅動 世界上最小 usb232gh2 高速光隔usb rs 232 48...
如何利用裝置的rs232介面與三菱fx系列plc進行通訊
淋漓盡致的 通常情況下,三菱fx系列plc通過程式設計口 ps 2 與上位機軟體進行rs232模式通訊,此時plc中不需要做特殊配置,只需在webaccess中將plc對應的通訊引數匹配即可。個人計算機上的通訊介面之一,由電子工業協會 electronic industries associatio...
怎樣用MATLAB實現序列的相加
墨汁諾 對應項相加就是 a 1 2 3 4 b 1 1 1 1 c a b 但是兩個序列長度必須相同,若長度不同,先補零在相加。 matlab中兩個序列相加,是將大小相同的兩個序列對應位置上的元素相加,直接用 就可。例子 x1 rand 1,10 產生兩個隨機數列y1 rand 1,10 a x1 ...