ClearCommError中的串行通信在读取缓冲区中找不到任何数据
Serial communication in ClearCommError finds no data in read buffer
我想使用串行通信(使用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引脚互换了。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- ClearCommError中的串行通信在读取缓冲区中找不到任何数据
- 找不到“协议缓冲区生成”命令libprotobuf.dll.a
- 如果找不到任何内容,Serial.find 是否会清除缓冲区