如何仅读取 Windows COM 端口上的可用数据?

Joe*_*wig 2 windows serial-port

我有一个串行 (COM) 端口的文件句柄。我需要立即读取可用的任何数据,而不是等待发送其他数据。

如何确定有多少数据可用?我可以打电话SetCommMask(myHandle, EV_RXCHAR),然后等待一个事件来告诉我一些数据可用,但这不会告诉我现在可以在不阻塞的情况下读取多少数据。

目前,我正在使用 CreateFile() 和重叠 I/O 来执行读取,因此它们是异步的,但它们仍然会等到缓冲区填满后报告 I/O 已完成。

mgh*_*hie 5

ClearCommError ()函数就是您所寻找的 - 它在COMSTAT结构中返回输入和输出队列中有多少个字符。