本文主要是介绍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++清空串口缓冲区的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!