我想通过串行通信(使用USB到RS232转换器)将数据从笔记本电脑(windows 7,处理器2.60GHz)发送到桌面(windows,处理器3.10GHz)。WriteFile函数能够从膝上型计算机发送数据(NumberOfBytesWritten是正确的)。但是在桌面端,ClearCommError没有检测到读取缓冲区中的数据。
这是我桌面上的相关代码:
while(1)
{
ClearCommError(hPort,&dwErrors,&commStatus);
if (commStatus.cbInQue != 0)
ReadFile(hPort,&data,1,&dwBytesRead,NULL);
}如果条件永远满足不了。DCB结构中的波特率和其它参数在双方都是相同的。
当我在同一个系统中通过短路RS232连接器中的RX和TX引脚时,相同的代码可以工作。
发布于 2013-12-17 11:24:28
抱歉,伙计们,代码没有问题。我的RX和TX针被交换了。
发布于 2013-12-13 08:36:47
您可以尝试重新处理这个循环:
while (1)
{
ClearCommError(hPort,&dwErrors,&commStatus);
if (commStatus.cbInQue != 0) break;
Sleep(10);
}
ReadFile(hPort,&data,1,&dwBytesRead,NULL);睡眠会给系统一些时间来响应更多的数据--你可能旋转得太快了。
https://stackoverflow.com/questions/20561328
复制相似问题