2009-04-25 109 views
2

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

如何确定有多少数据可用?我可以拨打SetCommMask(myHandle, EV_RXCHAR),然后等待一个事件告诉我,某些数据可用,但是这并不能告诉我现在我可以在多大程度上无阻塞地阅读。

目前我正在使用CreateFile()和重叠I/O来执行我的读取操作,因此它们是异步的,但它们仍在等待缓冲区填充以报告I/O完成。

回答

4

ClearCommError()功能是你在找什么 - 它返回的COMSTAT结构许多字符如何在输入和输出队列。