天天看點

一個基于API的VB.net序列槽通訊類

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位元組來讀取緩沖區裡的資料。

繼續閱讀