串列埠通訊資料丟失的問題
阿新 • • 發佈:2019-02-01
擔任去中興軟創合作的專案,並且擔任了組長責任大了,獨立完成C++的串列埠通訊全部功能.
昨天除錯我寫的串列埠通訊程式,發現0x00的資料無法接收。在網上找了一下,發現有不少人有遇到這個問題。
今天早上來,把程式改過了,現在可以很好地接收到0x00資料了。
參考了一些資料
http://topic.csdn.net/u/20090112/15/60e7cd07-7336-4a6c-9b24-245f6379cf70.html
0x00對於char型別的資料來說可能會被認定為結束符'0'
dcb.fDtrControl = DTR_CONTROL_ENABLE ;
dcb.fRtsControl = RTS_CONTROL_ENABLE ;
把char改成BYTE
你是不是把DCB塊裡的fNull屬性弄成TURE了,這個屬性一般用來指明是否丟棄收到的NULL字元,你改成FALSE看看
我把dcb.fNULL=FALSE;
還是收不到00;
我想可能是這樣的: 之前0x11 收不到,加上這兩句即
dcb.XoffChar =FALSE;
dcb.XonChar =FALSE;之後 , 00就收不到了,而沒加改之前,00是可以收到的,問題應該出在這裡吧?
dcb.XoffChar =FALSE;你這個不對,XoffChar是表明XOFF字元,表示接收和傳送到XOFF字元就暫停資料傳輸,你現在設定的是FALSE,就是0,所以碰到0就停止接收了,我覺得你把這句刪除掉試試看,TRY