是否有非阻塞函数使用C返回Windows中串行端口的当前rx队列长度?
我看过的所有示例都只是调用ReadFile
,它会阻塞直到指定的超时,所以我想知道是否有可能在读取之前检查缓冲区中是否有内容?
例如。我可以简单地对每个角色执行此操作:
void ReadCharacter(char *theCharacter)
{
DWORD numBytesRead = 0;
while (numBytesRead == 0)
{
ReadFile(comPorthandle,
theCharacter,
sizeof(char),
&numBytesRead,
NULL);
}
}
但是有可能有类似的东西
int numBytesRx = GetNumBytesRx(&portHandle);
if (numBytesRx > 0)
Read(&portHandle, targetBuffer, numBytesRead);
最佳答案
要通过ReadFile
通过COM端口执行异步IO,请考虑使用函数的最后一个参数,LPOVERLAPPED
和OVERLAPPED
结构。 OVERLAPPED
是Windows中异步IO的常见做法。
Here you can find examples