boost asio 串口操作中修改字節超時間隔參數

再用asio編寫串口異步讀寫程序的時候,有時候會出現將一幀報文分幾次讀的情況,比如對方發過來16個字節,可能消息響應函數被調用了兩次,每次讀取8字節,爲了處理這種情況,必須設置串口字節超時間隔(這裏設置爲20ms),根據此參數來判斷相鄰的兩個報文是否可視爲同一報文,而boost::asio::serial_port 類沒有直接提供字節間隔時間的配置,所以要通過native()函數獲得本地對象,然後再設置

代碼如下:

//xx.h

//boost::asio::serial_port m_serial_port;


//xx.cpp

#ifdef _MSC_VER

COMMTIMEOUTS to;
GetCommTimeouts(m_serial_port.native(),&to);
to.ReadIntervalTimeout = 20;
SetCommTimeouts(m_serial_port.native(),&to);
#endif
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章