① 请问串口通讯中丢包如何处理
是不是通信速率设的太高了,高的话容易丢数据。
建议使用流控制。
② 关于 485 丢包的事
有两个端的设备发送数据的时候就会丢包,但软件是不知道数据已经丢包了。
通过 crc16 检验,可以断定数据是否丢包,但这个要在数据包读完后才进行。
当陪到丢包的位置在数据长度上面,比如长度变得特别大的时候,
这时候串口就一直读一直读,就是读不到完整的包,在API上表现就是超时了。
通过DEBUG信息,可以看到数据被读取了,但是无法解析。
一个简单的解决方法就是读到数据后进行超时操作,比如超过 2 秒没有读到数据,
那么就是丢包了。
丢包后,重启串口就可以了,就可以恢复,通过这种方式来及时发现丢包问题。