自己在开发调试过程中走了很多的坑,找了很多的文章,总结起来希望以后再碰到的时候能想起来,
其中参考了大佬的相关回答:大佬的链接
使用谷歌的串口调试工具有时会出现乱序和乱码以及缺数据的现象
乱序问题有以下几种出现的可能:
1.在配置相关串口时配置了多个串口
原因:导致多个串口同时开启,串口之间抢占资源无法及时接收到信息。
解决办法:确认配置了几个串口,并且不能循环开启串口。
2.在配置相关波特率时没有统一波特率
原因:波特率没有统一无法,准确接收信息。
解决办法:确认与连接设备的波特率是否统一。
3.在调用下一个串口时没有关闭之前的串口
原因:导致了同时开启了2个或者多个串口,串口之间会抢占资源,导致当前想使用的串口无法及时接收到数据。
解决办法:保证在开启下一个串口时关闭前一个串口。
4.使用了错误的底层代码,导致接收数据时产生了错误。
原因:未知
解决办法:更改底层文件 SerialPort.c(直接换一份代码)
乱码现象主要由以下几个方面导致的:
1.设备与程序设置的波特率不同,
原因:波特率差值过大时程序无法解析传输数据
解决办法:统一波特率
2.设备传输数据时使用了程序无法解析的类型
原因:由于都是通过字节流传输的,程序中需要转成相对应的类型。
解决办法:统一类型
缺数据就比较尴尬了:
缺数据主要是由串口与设备的连接不稳定导致的,主要是因为连接线松动导致。
如果出现缺数据问题,首先要去确认连接线是否牢固。