2023-06-12
工作记录
00

前言

单片机使用过程中,经常使用json和上位机进行通信,json数据格式为最常用的方式之一,以下简单介绍单片机串口接收json字符串的实现过程

c
#include <ArduinoJson.h>

int State = 0;
boolean beginFlag = 0;
String inputString = "";         // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete

StaticJsonDocument<200> doc;

void setup() {
  // put your setup code here, to run once:
  while (!Serial);
}

void loop() {
  /*************串口数据接收**************/
  while (Serial.available()) {
    // get the new byte:
    char inChar = Serial.read();
    if (inChar == '{' && beginFlag == 0) {
      beginFlag = 1;
    }
    if (beginFlag == 1) {
      if (inChar == '{') {
        State += 1;
      } else if (inChar == '}') {
        State -= 1;
      }
      inputString += inChar;
      if (State == 0) {
        beginFlag = 0;
        stringComplete = true;
      }
    }
  }
  /*************接收数据解析及处理**************/
  if (stringComplete) {
    stringComplete = false;
    //Serial.println(inputString);
    DeserializationError error = deserializeJson(doc, inputString.c_str());
    if (error) {
      Serial.print(F("deserializeJson() failed: "));
      Serial.println(error.f_str());
      inputString = "";
      return;
    }
    //开始解析数据
    inputString = "";
  }
}
如果对你有用的话,可以打赏哦
打赏
logo ali pay
logo wechat pay