串列埠傳輸都是經過serialport類來實現
在serialport中有三個事件,主要用到的是datareceived接受資訊事件與errorreceived接受錯誤資訊事件。
在datareceived接收串列埠發來資訊
private void serialport1_datareceived(object sender, system.io.ports.serialdatareceivedeventargs e)));
}以上是被動接收串列埠資訊模式。
主動模式
在觸發事件裡發生需要得到結果的資訊,然後接收結果
private void button1_click(object sender, eventargs e)
void sendcommand(string value)
data[size] = (byte)convert.tochar(13);
data[size + 1] = (byte)convert.tochar(10);
if (serialport1.isopen)
}主動模式中也需要datareceived接收資訊
在建立serialport時,主要根據以下資訊判斷裝置
baudrate
databits
handshake
parity
portname
sopbts
以上資訊到廠價的說明文件中找!
傳輸資料時候,當資料字元長時,接收是分批次接收,每次都觸發事件,這樣得到資料就是碎片化的,不容易結合,到網上查到vb的乙個處理這樣的方法,延時載入
處理延時:
privatesub
serialport1_datareceived(
byval
sender
assystem.object,
byval
e as
system.io.ports.serialdatareceivedeventargs)
handles
serialport1.datareceived
dims
asstring
, ilen
asinteger
dimall(-1)
asbyte
, index
asinteger
=0ilen =serialport1.bytestoread
dowhile
ilen >0
controlchars.crlf)
redimpreserve
all(index + ilen -1)
index += serialport1.read(all, index, ilen)
system.threading.thread.sleep(50) 『
這個很重要!
ilen = serialport1.bytestoread
loop
string
end sub
處理延時完整程式
串列埠傳輸速率計算
起始位1bit,資料位8bit,停止位1bit,無校驗,無流控 波特率115200 bps 115200 位 秒 沒有校驗位時,起始位1bit 資料位8bit 停止位1bit 10bit 波特率115200 bps 115200 位 秒 11.25 kb 秒 11520 位元組 秒 串列埠通道可參考...
C 串列埠傳輸中文字元
傳送 encoding gb system.text.encoding.getencoding gb2312 byte bytes gb.getbytes 中文 serialport1.write bytes,0,bytes.length 接收 int ilen serialport1.bytest...
利用串列埠傳輸結構體資料
寫在前面 結構體是一種資料的歸類方式,相比陣列或變數更具有整體全面性,例如乙個陣列只可以放一些按照元素順序存放的單元變數,即 buffer i 有多大,陣列內元素就有多少。那麼我們這時候如果我們用這個陣列來接收串列埠接收資訊,資訊的格式是 資料頭 資料長度 資料區 資料校驗 資料尾 假設資料區為 姓...