1.命名空間
System.IO.Ports命名空間包含了控制串口重要的SerialPort類,該類提供了同步 I/O 和事件驅(qū)動的 I/O、對管腳和中斷狀態(tài)的訪問以及對串行驅(qū)動程序?qū)傩缘脑L問,所以在程序代碼起始位置需加入Using System.IO.Ports。
2.串口的通訊參數(shù)
串口通訊最常用的參數(shù)就是通訊端口號及通訊格式(波特率、數(shù)據(jù)位、停止位和校驗(yàn)位),在MSComm中相關(guān)的屬性是CommPort和Settings。SerialPort類與MSComm有一些區(qū)別:
Ø 通訊端口號
[PortName]屬性獲取或設(shè)置通信端口,包括但不限于所有可用的 COM 端口,請注意該屬性返回類 型為String,不是Mscomm.CommPort的short類型。通常情況下,PortName正常返回的值為COM1、COM2……,SerialPort類最大支持的端口數(shù)突破了CommPort控件中CommPort屬性不能超過16的限止,大大方便了用戶串口設(shè)備的配置。
Ø 通訊格式
SerialPort類對分別用[BaudRate]、[Parity] 、 [DataBits]、[StopBits]屬性設(shè)置通訊格式中的波特率、校驗(yàn)位、數(shù)據(jù)位和停止位,其中[Parity]和[StopBits]分別是枚舉類型Parity、StopBits,Parity類型中枚舉了Odd(奇)、Even(偶)、Mark、None、Space,Parity枚舉了None、One、OnePointFive、Two。
SerialPort類提供了七個重載的構(gòu)造函數(shù),既可以對已經(jīng)實(shí)例化的SerialPort對象設(shè)置上述相關(guān)屬性的值,也可以使用指定的端口名稱、波特率和奇偶校驗(yàn)位數(shù)據(jù)位和停止位直接初始化 SerialPort 類的新實(shí)例。
3.串口的打開和關(guān)閉
SerialPort類沒有采用MSComm.PortOpen=True/False設(shè)置屬性值打開關(guān)閉串口,相應(yīng)的是調(diào)用類的Open()和Close()方法。
4. 數(shù)據(jù)的發(fā)送和讀取
SerialPort類調(diào)用重載的Write和WriteLine方法發(fā)送數(shù)據(jù),其中WriteLine可發(fā)送字符串并在字符串末尾加入換行符,讀取串口緩沖區(qū)的方法有許多,其中除了ReadExisting(讀取 [url=ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref8/html/T_System_IO_Ports_SerialPort.htm]SerialPort[/url] 對象的流和輸入緩沖區(qū)中所有立即可用的字節(jié))和ReadTo(一直讀取到輸入緩沖區(qū)中的指定 value 的字符串),其余的方法都是同步調(diào)用,線程被阻塞直到緩沖區(qū)有相應(yīng)的數(shù)據(jù)或大于ReadTimeOut屬性設(shè)定的時間值后,引發(fā)ReadExisting異常。
5. DataReceived事件
該事件類似于MSComm控件中的OnComm事件,DataReceived事件在接收到了[ReceivedBytesThreshold]設(shè)置的字符個數(shù)或接收到了文件結(jié)束字符并將其放入了輸入緩沖區(qū)時被觸發(fā)。其中[ReceivedBytesThreshold]相當(dāng)于MSComm控件的[Rthreshold]屬性,該事件的用法與MsComm控件的OnComm事件在CommEvent為comEvSend和comEvEof時是一致的。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。