quarta-feira, 6 de maio de 2020

JSON e Arduino


No post de hoje iremos falar sobre interoperabilidade de sistemas. O termo pode parecer estranho, mas grande parte dos serviços da Web funciona neste formato, onde algum sistema envia informações para outro. E aqui vem a pergunta, como enviar informações quando os sistemas são desenvolvidos em linguagens diferentes ??





Tempos atrás tínhamos os arquivos XML que eram enviados de um sistema para outro. Exemplo disso é a maneira como os dados de Nota Fiscal Eletrônica ainda são enviados para a Receita Federal.

 
Exemplo de NFe enviada a Receita Federal





Outro maneira de enviar informações entre sistemas é o formato Json, bastante difundido na maioria das linguagens. A plataforma Arduino não poderia ficar de fora e também tem a biblioteca para realizar o envio e recebimento deste tipo de dados.

Dentre todas as bibliotecas que testei essa é a melhor Arduinojson. Abra o gerenciador de bibliotecas da IDE Arduino e faça a instalação da última versão. Neste momento a 6.15.1

Gerenciador de bibliotecas Arduino




Serializando dados - Criando o arquivo Json

#include <ArduinoJson.h>


void setup() {
Serial.begin(9600);

}

void loop() {

DynamicJsonDocument doc(200);

doc["sensor"] = "gps";
doc["time"] = 1351824120;

JsonArray data = doc.createNestedArray("data");
data.add(48.75608);
data.add(2.302038);

serializeJsonPretty(doc, Serial); //imprime na serial em um formato mais legível
serializeJson(doc, Serial); //imprime no formato contínuo

}



DeSerializando dados - Tratando um arquivo Json recebido
#include <ArduinoJson.h>

void setup() {
Serial.begin(9600);
}

void loop() {
DynamicJsonDocument doc(200);
const char* json = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.75608,2.302038]}";

deserializeJson(doc, json);

const char* sensor = doc["sensor"];
long time = doc["time"];

float data_0 = doc["data"][0];
float data_1 = doc["data"][1];

Serial.println(sensor);
Serial.println(time);
Serial.println(data_0);
Serial.println(data_1);
}





Nenhum comentário:

Postar um comentário