|

JSON z Arduino

Obiekty można zapisywać w postaci JSON (słownik). Do jego obsługi można skorzystać z biblioteki ArduinoJason: https://arduinojson.org/

Przykład: Serializacja na obiekt Json

{
  "imie": "Mateusz",
  "numer": 1234
}
#include <ArduinoJson.h>   
struct JData{
  const char* imie;
  long numer;
};
JData jdata;

void setup() {
  Serial.begin(9600);
  const char* input = "{ \"imie\":\"Mateusz\", \"numer\":1234 }";
  JsonDocument doc;
  DeserializationError error = deserializeJson(doc, input);
  if(error){
    Serial.print("Error: ");
    Serial.println(error.c_str());
    return;
  }
  jdata.imie = doc["imie"];
  jdata.numer = doc["numer"];
  Serial.println(jdata.imie);
  Serial.println(jdata.numer);
} 

void loop() {}

Przykład: Pobieranie obiektu JSON z pliku na karcie SD

#include <SPI.h>
#include <SD.h>
#include <ArduinoJson.h>  
const char* fileName = "test.txt";
File myFile;
struct Config {
  char hostname[64];
  int port;
};
Config config;   
void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. 
  }
  Serial.print("Initializing SD card...");
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    while (1);
  }
  Serial.println("initialization done.");
  myFile = SD.open(fileName, FILE_WRITE); //O_APPEND, O_CREATE
  if (myFile) {
    myFile.close(); 
  } else {
    Serial.println("error opening file");
  }
  myFile = SD.open(fileName); // re-open the file for reading:
  if (myFile) {
    JsonDocument doc;
    DeserializationError error = deserializeJson(doc, myFile);
    if(error){
      Serial.print("Error: ");
      Serial.println(error.c_str());
      return;
    }
    config.port  = doc["port"];
    strlcpy(config.hostname, doc["hostname"], sizeof(config.hostname)); 
    Serial.print("Host: "); 
    Serial.println(config.hostname);
    Serial.print("Port: ");
    Serial.println(config.port);
    myFile.close();
  } else {
    Serial.println("error opening file");
  }
}
void loop() { }

Zobacz: Czytnik kart SD SPI z Arduino

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *