關於c 串列埠傳輸

2021-06-22 21:19:45 字數 1537 閱讀 9083

串列埠傳輸都是經過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 有多大,陣列內元素就有多少。那麼我們這時候如果我們用這個陣列來接收串列埠接收資訊,資訊的格式是 資料頭 資料長度 資料區 資料校驗 資料尾 假設資料區為 姓...