導航:首頁 > 數據處理 > 單片機如何解析json串口數據

單片機如何解析json串口數據

發布時間:2023-07-29 12:04:12

⑴ 單片機串口數據處理框架

    串口通信具有廣泛的應用,一方面串口配置簡單,僅需3根線(tx、rx、gnd)即可實現通信,另一方面串口具備全雙工通信的能力。因此串口開發是單片機開發中一個重要的能力。
    串口通信的難點在於,每條通信命令的長度可能不一致,何時判斷數據包是否接收完整,每包數據如何校驗,在單片機開發中均佔用很大的工作量。

    由於單片機往往同時對接多個串口通信,可以將所有的通信統一處理,收到一包數據後再通知相應的線程進行處理。

     writeptr readptr 分別記錄串口緩沖區內數據寫入和讀取的指針(標號)。一般將緩沖區構建為環形緩沖, *writeptr==*readptr 認為緩沖區空, *writeptr==*readptr + 1 認為緩沖區滿。 ctrl 欄位用來控制是否開始計時數據接收超時,在超時時間內沒接收到一個位元組的數據,重新累計數據包超時時間, timeout 欄位則是具體的超時時間。 discart 欄位用來丟棄不完整的數據包,如果數據包在規定的時間內均沒有收到完整數據,則將該數據包丟棄。
系統初始化時,對每個欄位進行賦值:

    串口數據的接收既可以採用中斷的方式,也可以採用DMA的方式。盡管中斷方式會影響CPU使用效率,但從實際使用效果上來看,一般不是時間要求非常高的應用,中斷的影響非常小。

    每收到一包數據,將 timeout 置零,並將 ctrl 置一,開始計算數據包是否超時。由於緩沖區是環形的, UartCtrl[UART_VIDEO].writeptr 欄位增加時需要注意對邊界的處理。
    通過定時器中不斷檢測相應的欄位,來決定是否通知線程處理收到的數據包,或者丟棄不完整的數據包。

    串口數據包往往具有比較簡單數據結構,如包頭、包尾、長度、校驗等欄位,通過對每包數據相應欄位的檢驗,判斷數據包是否完整及合法。不同的感測器的通信格式一般都比較類似,因此可以採用以下的流程進行檢驗。最後既可以將合格的數據包復制到另外的緩存進行處理,也可以在該函數中直接處理以節省空間。

    處理完一包數據以後,若發現剩餘長度大於0,認為環形緩存中還有待處理的數據包,重新進入該函數進行處理。

    串口數據的處理在單片機開發中佔有很大比重的工作量,通過上述數據結構和相應處理函數,可以將不同的感測器的數據用同樣的方式處理,有效提高開發效率。其他匯流排的數據處理,也可以採用類似的方式進行。

閱讀全文

與單片機如何解析json串口數據相關的資料

熱點內容
apachedruid是什麼資料庫 瀏覽:588
手機程序包換了怎麼辦 瀏覽:648
如何清除王者榮耀微信數據 瀏覽:503
網路扶貧產品有哪些 瀏覽:383
上技術學院需要准備什麼 瀏覽:587
數據類型哪些是字元型 瀏覽:33
售賣偽造3c的產品怎麼判 瀏覽:11
哪個手機上的小程序能看電視劇 瀏覽:249
技術領先者是什麼 瀏覽:477
除了打電話報案發信息怎麼報案 瀏覽:447
卡拉寶的目標市場有哪些 瀏覽:335
基金撤銷交易後資金什麼時候到賬 瀏覽:19
如何建立小程序官網 瀏覽:392
剔除數據為什麼要剔除金融行業 瀏覽:698
安全技術防範備案怎麼做 瀏覽:206
lead用什麼代理軟體 瀏覽:598
新式家居產品有哪些 瀏覽:870
交易日送股一般多少個 瀏覽:95
小程序新零售是什麼意思 瀏覽:279
聽力差的男孩適合學什麼技術 瀏覽:36