Не могу найти библиотеку JsonParser.h
- Войдите на сайт для отправки комментариев
Пт, 07/08/2020 - 11:30
Здравствуйте!
Не могу найти библиотеку JsonParser.h чтобы можно было использовать
Код (C++):
using namespace ArduinoJson::Parser;
Библиотеки которые я нахожу, не поддерживают данную строчку кода.
Пытаюсь создать проект http://digitrode.ru/computing-devices/mcu_cpu/186-pogodnaya-stanciya-na-osnove-arduino-i-wi-fi-modulya-esp8266.html
Библиотеки которые я нахожу, не поддерживают данную строчку кода.
если написать вместо for - "Far", а вместо while - whoile - компилятор тоже будет ругаться, но это вовсе не означает. что "Ардуино не поддерживает циклы for и while" :) - намек понятен?
Выкладывайте свой код и текст ошибки, посмотрим, что там "не поддерживает"
#include <ArduinoJson.h> // #include <JsonParser.h> - эта библиотека в приведенном проекте (здесь ее нет) #include <SoftwareSerial.h> using namespace ArduinoJson::Parser; #define SSID "Sigma" // введите ваш SSID #define PASS "7712810m" // введите ваш пароль #define LOCATIONID "2925533" // id местоположения #define DST_IP "188.226.224.148" //api.openweathermap.org SoftwareSerial dbgSerial(3, 4); // RX, TX для отладки JsonParser<32> parser; void setup() { Serial.begin(115200); Serial.setTimeout(5000); dbgSerial.begin(115200); // для отладки dbgSerial.println("Init"); Serial.println("AT+RST"); // сброс и проверка, если модуль готов delay(1000); if(Serial.find("ready")) { dbgSerial.println("WiFi - Module is ready"); } else { dbgSerial.println("Module dosn't respond."); while(1); } delay(1000); // try to connect to wifi boolean connected=false; for(int i=0;i<5;i++){ if(connectWiFi()){ connected = true; dbgSerial.println("Connected to WiFi..."); break; } delay(1000); } if (!connected){ dbgSerial.println("Coudn't connect to WiFi."); while(1); } delay(5000); Serial.println("AT+CIPMUX=0"); // установка в режим одиночного соединения } void loop() { String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += DST_IP; cmd += "\",80"; Serial.println(cmd); dbgSerial.println(cmd); if(Serial.find("Error")) return; cmd = "GET /data/2.5/weather?id="; cmd += LOCATIONID; cmd += " HTTP/1.0\r\nHost: api.openweathermap.org\r\n\r\n"; Serial.print("AT+CIPSEND="); Serial.println(cmd.length()); if(Serial.find(">")){ dbgSerial.print(">"); } else { Serial.println("AT+CIPCLOSE"); dbgSerial.println("connection timeout"); delay(1000); return; } Serial.print(cmd); unsigned int i = 0; //счетчик времени int n = 1; // счетчик символов char json[100]="{"; while (!Serial.find("\"main\":{")){} while (i<60000) { if(Serial.available()) { char c = Serial.read(); json[n]=c; if(c=='}') break; n++; i=0; } i++; } dbgSerial.println(json); JsonObject root = parser.parse(json); double temp = root["temp"]; double pressure = root["pressure"]; double humidity = root["humidity"]; temp -= 273.15; // Перевод градусов кельвины-цельсии dbgSerial.println(temp); dbgSerial.println(pressure); dbgSerial.println(humidity); dbgSerial.println("===="); delay(600000); } boolean connectWiFi() { Serial.println("AT+CWMODE=1"); String cmd="AT+CWJAP=\""; cmd+=SSID; cmd+="\",\""; cmd+=PASS; cmd+="\""; dbgSerial.println(cmd); Serial.println(cmd); delay(2000); if(Serial.find("OK")){ dbgSerial.println("OK, Connected to WiFi."); return true; }else{ dbgSerial.println("Can not connect to the WiFi."); return false; } }сообщения компилятора еще.
Только текстом!!! - а то многие норовят скриншот вставить.
openWeather:6:30: error: 'Parser' is not a namespace-nameЕсть библиотека ArduinoJsonParser-master
в которой подключаются следующие h-шники:
Похоже вы пытаетесь запустить пример от старой версии библиотеки, с новой он не работает.
Вот совершенно точно та самая библиотека, от которой у вас пример https://github.com/bblanchon/ArduinoJson
но файла JsonParser.h в ней теперь нет, хотя в 2014 году был
Парсинг JSON в библиотеке теперь делается по другому, возьмите новый привер.
Не могу найти простой пример парсинга. Вернее чтобы он более менее соответствовал приведенному коду. Есть примеры, но в них я не понимаю. Может быть подскажите?
Значить, брось пока парсить json, начни с простого.
мне надо понять распаривание на Ардуине. Простое я давно попробовал.
Темы про парсинг на этом форуме возникают с завидной регулярностью. Поищите - не ленитесь. В свое время Евгений замечательно про это рассказал. Без всяких левых библиотек.
мне надо понять распаривание на Ардуине. Простое я давно попробовал.
нет никакого "распарсивания на ардуине", так же как нет отдельных ВУ на форд и мерседес. Вы либо умеете водить, либо нет