2017-12-26 26 views
-5

問題を解決するのに手伝ってもらえますか?私はArduinoを使用しています。 ArduinoでJSONデータを読み込んで分割するにはどうすればよいですか?値は{$sen1:$sen2}です。Arduino JSONデータを読む

+0

フォーマットコードを正しく。 – dev8989

答えて

-1

どのようにデシリアライズArduinoJsonとJSONドキュメント。

ソースコード

// ArduinoJson - arduinojson.org 
// Copyright Benoit Blanchon 2014-2017 
// MIT License 

#include <ArduinoJson.h> 

void setup() { 
    // Initialize serial port 
    Serial.begin(9600); 
    while (!Serial) continue; 

    // Memory pool for JSON object tree. 
    // 
    // Inside the brackets, 200 is the size of the pool in bytes. 
    // Don't forget to change this value to match your JSON document. 
    // Use arduinojson.org/assistant to compute the capacity. 
    StaticJsonBuffer<200> jsonBuffer; 

    // StaticJsonBuffer allocates memory on the stack, it can be 
    // replaced by DynamicJsonBuffer which allocates in the heap. 
    // 
    // DynamicJsonBuffer jsonBuffer(200); 

    // JSON input string. 
    // 
    // It's better to use a char[] as shown here. 
    // If you use a const char* or a String, ArduinoJson will 
    // have to make a copy of the input in the JsonBuffer. 
    char json[] = 
     "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; 

    // Root of the object tree. 
    // 
    // It's a reference to the JsonObject, the actual bytes are inside the 
    // JsonBuffer with all the other nodes of the object tree. 
    // Memory is freed when jsonBuffer goes out of scope. 
    JsonObject& root = jsonBuffer.parseObject(json); 

    // Test if parsing succeeds. 
    if (!root.success()) { 
    Serial.println("parseObject() failed"); 
    return; 
    } 

    // Fetch values. 
    // 
    // Most of the time, you can rely on the implicit casts. 
    // In other case, you can do root["time"].as<long>(); 
    const char* sensor = root["sensor"]; 
    long time = root["time"]; 
    double latitude = root["data"][0]; 
    double longitude = root["data"][1]; 

    // Print values. 
    Serial.println(sensor); 
    Serial.println(time); 
    Serial.println(latitude, 6); 
    Serial.println(longitude, 6); 
} 

void loop() { 
    // not used in this example 
}