串口接收數據無法判斷完整性

發布於 2022-04-22 11:49:38

W801的DEMO裡面,注冊的串口回調,測試了下發送幾十個字節,會進入3次串口回調,每次接收部分長度,如何可以改成根據時間來判斷,超過多少ms未收到新數據,再進入回調,或者這個有查詢啟動時間的API麼?我主任務來判斷數據變化,超過多長時間沒變,才處理數據

查看更多

關注者
0
被浏覽
1.5k
大信
大信 認證專家 2022-04-22
硬件開發,軟件開發,系統開發,工程架構,方案設計

因為串口收發數據,沒有開始結束的標志。 因此發送一段命令,是否結束,需要靠解析命令的格式來進行。這也就是為什麼很多 GPS,GPRS,4G 通信模塊 使用 AT+ 指令的接口,AT就是一個命令的開頭,按一定的格式,來判斷是否接收到了完整的命令,這種常使用 ASIC 編碼通信。
還可以通過時隙來判斷,比如,收發端約定,兩個命令間隔必須大於 0.5 秒,那麼只有超過0.5秒時,才去判斷指令是否發送完畢,這種模式一般跟第一種一起用。因為很多鏈路不保證通信速率,因此可能造成通信延遲。
這也就是很多 AT 指令設計了回應口令的機制。即,發送端發送一個命令後,接收端如果接收完整,那麼回應一個OK,發送端如果沒收到這個回應,那麼發送端將嘗試重發....
另外可以通過,在指令前後加一個校驗,比如包格式,內帶長度,CRC, CHEKKSUM 等信息,來校驗指令的完整性,這個一般用在可靠性要求高的通信上,常用二進制數據通信。

這樣,通過通信過程的控制個約定機制,來保證發送數據的完整和可靠。

1 個回答

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽