485通信偶尔接收不到数据,串口工具也是如此,422通信没什么问题,不知道是通信问题还是硬件设备问题,USB串口转也换了个试过
连线太长
供电不足
……
代码有了,虽然依赖了sleep,不过sleep时间够长,应该有足够时间接收
不过建议处理一下串口异常,虽然你上个问题没有代码,我以为是C#回复一些C#资料,不过那个资料也说明了,串口本身会有些异常,故此他有Eroor事件
不过你是C++,我一时也不好找资料。就引用一下Chartgpt的回复,比如底层发生了一个奇偶校验错误,chartgpt的回复是
当产生奇偶校验错误时,如果使用ReadFile函数读取串口数据时发生奇偶校验错误,ReadFile函数将返回错误,并且不会将任何数据读入缓冲区。因此,此时ReadFile函数的返回值将为FALSE,而且读取的字节数将为0。
然后如果是我个人,我可能会做的事情
1.自己的代码处理串口可能的异常
2.安装busdog这类串口监听工具,如果串口调试工具无法确定问题。我可能会直接监听串口在总线上的数据,来确定串口驱动到底发没发数据给系统
3.如果上面都没有找到任何证据,那就得怀疑硬件了。这个可以外接“串口侦听仪”,这个东西大部分人没有,我个人买过一台,不过大部分时间在吃灰,因为真正硬件出问题的时候还是比较少的。