c++清空串口缓冲区
緩沖區控制
Win32通信API除了提供SetupComm()函數實現初始化的緩沖區控制外,還提供了PurgeComm()函數和FlushFileBuffers()函數來進行緩沖區操作。
PurgeComm()函數的聲明如下:
BOOL?PurgeComm(
HANDLE hFile,? //?返回的句柄
DWORD dwFlags? //?執行的動作
);
參數hFile指向由CreateFile函數返回的句柄,dwFlags表示執行的動作,這個參數可以是表表5中的任一個。參數hFile指向由CreateFile函數返回的句柄,可以調用GetLastError()函數獲得進一步的錯誤信息。
表5?????停止位數和奇偶校驗位
| ??????????????值 | ???????????????描述 |
| ??? PURGE_TXABORT | 即使發送操作沒有完成,也終止所有的重疊發送操作,立即返回 |
| ??? PURGE_RXABORT | 即使接收操作沒有完成,也終止所有的重疊接收操作,立即返回 |
| ??? PURGE_TXCLEAR | 清除發送緩沖區 |
| ??? PURGE_RXCLEAR | 清除接收緩沖區 |
由上面的敘述可以看出,PurgeComm()函數可以在讀寫操作的同時,清空緩沖區。當應用程序在讀寫操作時調用PurgeComm()函數,不能保證緩沖區內的所有字符都被發送。如果要保證緩沖區的所有字符都被發送,應該調用FlushFileBuffer()函數。該函數只受流量控制的支配,不受超時控制的支配,它在所有的寫操作完成后才返回。
FlushFileBuffers()的函數聲明如下:
BOOL?FlushFileBuffers(
HANDLE hFile? //?函數打開的句柄
);
參數hFile指向由CreateFile函數打開的句柄,如果該函數調用成功,則返回值不為零;若函數調用失敗,則返回值為零。出錯時可以調用GetLastError()函數獲得進一步的出錯信息。
總結
以上是生活随笔為你收集整理的c++清空串口缓冲区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如果你扯了团队后腿,你应该内疚
- 下一篇: C++ int与string的转化