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()函数获得进一步的出错信息。

猜你喜欢

转载自blog.csdn.net/u011555996/article/details/86624833
今日推荐