VB.net的序列槽通訊支援總是讓人覺得有所不足,在使用VB6的MsComm32.ocx時,很多人都會在VB.net的開發中覺得很困擾。
這裡講述的VB.net序列槽通訊類使用native代碼,并且它是通API調用實作的,你會發現VB.net的序列槽通訊就是這麼簡單。
在說明如何使用這個類前,需要說明的是,本類隻是一個VB.net的序列槽通訊示範,你可能需要根據你的情況修改後使用。另外,本類的目的是通過例子教會你在無需ocx控件和第三方元件的支援下用VB.net開發序列槽通訊程式,所有并沒有完善的異常錯誤處理。
1.初始化并打開序列槽
建立一個CRs232類的執行個體,并在調用Open方法前設定好序列槽通訊參數。
例:
Dim moRS232 as New Rs232()
With moRs232
.Port = 1 '// Uses COM1
.BaudRate = 2400 '// 波特率 2400
.DataBit = 8 '// 8 data bits
.StopBit = Rs232.DataStopBit.StopBit_1 '// 停止位 1
.Parity = Rs232.DataParity.Parity_None '// 無奇偶校驗
.Timeout = 500 '//逾時時間500 ms
End With
'// 初始化并打開序列槽
moRS232.Open ()
'// 序列槽打開後,你可以随意地控制DTR/RTS
moRS232.Dtr = True
moRS232.Rts = True
為了處理異常情況,建議你使用Try...Catch。
2.發送資料
本類為Rx和Tx準備了兩個緩沖區(buffer),發送資料時,隻需要設定TxData屬性為你需要發送的資料,然後調用Tx方法就可以了。
例如:
moRS232.TxData = txtTx.Text
moRS232.Tx()
3.接收資料
先調用Rx方法(參數為您需要從序列槽讀取的位元組數),然後讀取RxData屬性。
例如:
moRS232.Rx(10) '// 從序列槽通訊緩沖區裡讀取10位元組
Dim sRead as String=moRs232.RxData
需要注意的是,當本類無法用序列槽讀取到所需的位元組數,程式線程在逾時異常發生前是鎖死的,逾時時間通過Timout屬性設定。
如果你沒有指明需要讀取的位元組數,本類預設使用512位元組來讀取緩沖區裡的資料。