我想使用串行通信(使用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引脚在同一系统中进行写入和读取时,相同的代码也可以工作。
答案 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引脚互换了。