導航:首頁 > 數據處理 > 單片機如何解析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串口數據相關的資料

熱點內容
一般的朋友圈的信息怎麼刪除 瀏覽:490
如何獲取供需數據 瀏覽:656
艦船科學技術哪個國家最好 瀏覽:220
tst微商代理怎麼賺錢 瀏覽:127
個股如何交易 瀏覽:311
論文數據收集怎麼寫 瀏覽:508
成都大型的制氫技術公司有哪些 瀏覽:55
什麼是修復保濕產品 瀏覽:141
春季高考信息技術可以報哪些學校 瀏覽:814
win10怎麼更新顯卡驅動程序 瀏覽:140
福建浦城人才市場在哪裡 瀏覽:511
澆水種果樹是在哪個程序 瀏覽:526
怎麼看紅魚吉他技術 瀏覽:435
店鋪掃碼充電寶怎麼代理 瀏覽:687
錄制銀行產品視頻開場白怎麼說 瀏覽:337
衛生巾哪些牌子是中國產品 瀏覽:585
什麼為財付通交易 瀏覽:759
怎麼把代理業務做好 瀏覽:652
如何申報低碳產品認證 瀏覽:869
當前交易的基金有哪些 瀏覽:239