現在在做一個界面,用到了SerialPort類,需要在打開串口后,發送一幀資料,然后立即更改波特率。
發現還沒等發送完成,波特率就已經更改了,這就導致我發送的那一幀資料是錯的。
::SendMessage((port->m_pOwner)->m_hWnd, WM_COMM_TXEMPTY_DETECTED,0,(LPARAM) port->m_nPortNr);
我呼叫了上面的訊息,發現還是不行。比如說發送1024個位元組,它最后幾個位元組是沒有按照之前的波特率來而是根據更改后的波特率來的,說明還是沒有在發送完成后更改波特率。
問題:怎么判斷資料已經發送完成了呢?跪求各位大佬幫忙解決問題!
uj5u.com熱心網友回復:
SetCommMask WaitCommEvent 等待 EV_TXEMPTY 事件或者 ClearCommError 判斷 COMSTAT 引數 的 cbOutQue ==0
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/111985.html
標籤:進程/線程/DLL
