Windows中的串行通信 - ClearCommError在读缓冲区中找不到数据

时间:2013-12-13 07:33:53

标签: c++ windows serial-communication

我想使用串行通信(使用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结构中的波特率和其他参数在两侧都是相同的。

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

2 个答案:

答案 0 :(得分:1)

您可以尝试重新编写该循环:

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

睡眠将为系统提供一点时间来响应更多数据 - 您可能旋转太快。

答案 1 :(得分:1)

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