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