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

熱點內容
小程序如何寫頭部劉海 瀏覽:907
做捕魚代理有什麼技能 瀏覽:128
文華財經美黃金交易保證金多少 瀏覽:981
數字貨幣交易所點卡用來做什麼 瀏覽:100
附近哪裡有勞務市場呂梁 瀏覽:652
微信小程序代碼託管在哪裡 瀏覽:695
產品分類台是用的什麼電機 瀏覽:546
開發商為什麼找房產代理 瀏覽:386
代理記賬要怎麼學 瀏覽:794
金蝶k3基礎信息如何共享 瀏覽:477
麗水狗狗市場在哪裡 瀏覽:315
濰坊相關產品有哪些 瀏覽:195
海鮮批發市場哪些最正宗 瀏覽:861
c程序必須包含什麼 瀏覽:980
大智慧交易怎麼登錄 瀏覽:781
教培從業人員學什麼技術好 瀏覽:496
電腦鍵盤怎麼關閉應用程序 瀏覽:663
專業店和綜合店哪個技術好 瀏覽:207
為什麼顯示沒有數據總覽 瀏覽:553
ok交易所怎麼找到法幣 瀏覽:836