C 串列埠的BytesToRead屬性

2021-06-19 23:10:06 字數 705 閱讀 2522

今天除錯串列埠,發現bytestoread可以比readbuffersize屬性值大,而且這個大不是表面數值上的大,實際資料也沒有丟失。

查了msdn serialport. bytestoread 屬性 發現如下說明:

由於 readbuffersize 屬性只表示 windows 建立的緩衝區,而 bytestoread 屬性除了表示 windows 建立的緩衝區外還表示 serialport 緩衝區,

所以 bytestoread 屬性可以返回乙個比 readbuffersize 屬性大的值。

接收緩衝區包括序列驅動程式的接收緩衝區以及 serialport 物件自身的內部緩衝。

那麼序列驅動程式的緩衝區到底有多大呢?沒有搜尋到,試了一下,可以大於65k,之後沒再試了。

另外,對於serialport.datareceived 事件,假如一次事件的處理中,還沒處理完,輸入緩衝區又達到了serialport.receivedbytesthreshold的大小,此時不會再執行多一次datareceived處理函式(即不會同時有兩個datareceived執行緒在執行),只有當前一次的處理完了之後,再從頭執行datareceived方法。假如一直這樣的話,程式執行倒不會有問題,只是當接收的未處理的資料量大於緩衝區的大小時,資料將丟失。

對於這種情況,覺得比較好的是在datareceived裡面再專門開乙個執行緒,用於處理資料。datareceived只負責接收。

c wifi串列埠通訊 C 中的串列埠通訊

序列介面 serial port 又稱 串列埠 主要用於序列式逐位資料傳輸。常見的有一般電腦應用的rs 232 使用 25 針或 9 針聯結器 和工業電腦應用的半雙工rs 485與全雙工rs 422。序列介面按電氣標準及協議來分,包括rs 232 c rs 422 rs485 usb等。rs 232...

c 藍芽虛擬串列埠 C 虛擬串列埠通訊

將主埠com8拆分成 com1和com2兩個虛擬埠 com8接收的訊息會傳遞給com1和com2 serialport spsend spsend,spreceive用虛擬串列埠連線,它們之間可以相互傳輸資料。spsend傳送資料 serialport spreceive spreceive接受資料...

C 串列埠通訊

串列埠通訊類 serialportdao.csusing system using system.collections.generic using system.text using system.io.ports namespace ly.fuelstationpos.protocol set ...