ClearCommError中的串行通信在读取缓冲区中找不到任何数据

Serial communication in ClearCommError finds no data in read buffer

本文关键字:缓冲区 找不到 数据 读取 任何 通信 ClearCommError      更新时间:2023-10-16

我想使用串行通信(使用USB到RS232转换器)将数据从笔记本电脑(windows 7,处理器2.60GHz)发送到台式机(windows xp,处理器3.10GHz)。WriteFile函数能够从笔记本电脑发送数据(NumberOfBytesWritten是正确的)。但在桌面端,ClearCommError在读取缓冲区中未检测到任何数据。

这是我桌面上的相关代码:

while(1)
{
    ClearCommError(hPort,&dwErrors,&commStatus);
    if (commStatus.cbInQue != 0)
        ReadFile(hPort,&data,1,&dwBytesRead,NULL);
}

if条件永远不会满足。DCB结构中的baudrate和其他参数在两侧都是相同的。

当我通过短路RS232连接器中的RX和TX引脚在同一系统中写入和读取时,同样的代码也能工作。

您可以尝试重新设计该循环:

while (1) 
{ 
    ClearCommError(hPort,&dwErrors,&commStatus); 
    if (commStatus.cbInQue != 0) break; 
    Sleep(10); 
} 
ReadFile(hPort,&data,1,&dwBytesRead,NULL);

睡眠会给系统一点时间来响应更多的数据——你可能旋转得太快了。

很抱歉大家感到困惑,代码没有问题。我的RX和TX引脚互换了。