我有一个串行(COM)端口的文件句柄。我需要立即读取所有可用数据,而不必等待发送其他数据。
如何确定有多少数据可用?我可以调用SetCommMask(myHandle, EV_RXCHAR)
,然后等待一个事件告诉我有一些数据可用,但这无法告诉我现在不阻塞就可以读取多少数据。
目前,我正在使用CreateFile()和重叠的I/O执行读取,因此它们是异步的,但它们仍要等到缓冲区填满后才能将I/O报告为完整。
最佳答案
ClearCommError()函数就是您要寻找的功能-它在COMSTAT结构中返回输入和输出队列中有多少个字符。