在windows下使用串口通讯正常,在linux下使用串口通讯收不到数据
背景:最近在调试一台6维力传感器,使用厂商提供的软件没有问题,然后在windows下使用串口调试工具发送查询码可以正常通讯收到返回码,但是放到linux系统下使用串口调试助手发送却收不到数据
调试:在Linux系统下使用cutecom工具进行调试,配置与windows一样,见下图

linux系统下配置

这里在linux系统下使用的串口调试工具是cutecom,什么配置都尝试了一下,发现还是收不到数据。
分析了一下:
1.可能是不同系统的CRC校验码不一样导致,网上查了一下没有问题
2.可能是波特率过高为921600,发送数据过多导致
最后都不是原因。
问题解决:
又找了一台电脑,直接2台电脑进行通讯,通过另一台电脑监控不同系统发送的数据是否一致,目前可以确认的就是2个系统都能打开该串口,都能发送数据,但是linux系统接收不到数据。
通过发送数据检测立马发现问题:2个系统发送的数据不一致
那接下来就调整让linux系统发送的数据与windows系统一致即可。
通过半天的调试,最后发现问题还是在串口调试助手的配置上,就是下方的Char delay 时间配置,不知道什么时候改成了1ms,所以导致发送的数据一直不对。

本来以为这个只是延迟发送不影响数据发送,结果没想到是这个有问题,但是之前也有设置0ms的但是也没有收到数据。
总结:下次再遇到这种收不到数据的串口通讯问题,直接监测接收端接收的数据是否与正常接收的一致,然后再去调整。
希望本次的分享能对大家有所帮助,谢谢!
作者在Linux下使用串口调试助手与6维力传感器通讯时收不到数据。经排查发现,问题在于串口调试助手的Chardelay配置,将其设为1ms导致数据不一致。解决方法是监测接收数据并调整至与Windows系统一致。
1214

被折叠的 条评论
为什么被折叠?



