0.多用異步通訊方式,個人一般開一個線程來監視串口數據接收;
1.個人通常采用基于ComStat.cbInQue的循環查詢+WaitCommEvent等待EV_RXCHAR相結合的方式,循環查詢方式準確,不丟失數據,但占CUP時間,WaitCommEvent不占時間但只能讀取調用其后接到的字符.兩者結合,則可以互補.必請醒的是,當進行連續數據串行數據時,這種方式中的用WaitCommEvent來調整CUP占用時間的效果就要打折扣了,但面對多數時間內不進行的通信的應用時,這種方式就很有用;
2.在使用ClearCommError(m_hCom,&dwErrorFlags,&ComStat);前最好可以用Sleep(); 等待一段時間,試試吧!效果很好的;
3.使用權SetCommMask(m_hCom,EV_RXCHAR);來設置WaitCommEvent事件,用SetCommMask(m_hCom,0);來中止等待;
4.個人常在接收線程使用WaitForSingleObject(一個CEvent對象,0)來手工控制線程結束,通常是在等線程執行超過一定時間后加以結束.注意CEvent對象默認是一個自動對象;
5.GetOverlappedResult和WaitForSingleObject主要區別是前期不能設置等待時間.注意這點;
6.個人多PostMessage()及函數參數傳值的方式來傳遞接收來的數據;