① 請問串口通訊中丟包如何處理
是不是通信速率設的太高了,高的話容易丟數據。
建議使用流控制。
② 關於 485 丟包的事
有兩個端的設備發送數據的時候就會丟包,但軟體是不知道數據已經丟包了。
通過 crc16 檢驗,可以斷定數據是否丟包,但這個要在數據包讀完後才進行。
當陪到丟包的位置在數據長度上面,比如長度變得特別大的時候,
這時候串口就一直讀一直讀,就是讀不到完整的包,在API上表現就是超時了。
通過DEBUG信息,可以看到數據被讀取了,但是無法解析。
一個簡單的解決方法就是讀到數據後進行超時操作,比如超過 2 秒沒有讀到數據,
那麼就是丟包了。
丟包後,重啟串口就可以了,就可以恢復,通過這種方式來及時發現丟包問題。