Как получить полный ответ json SIM900 + Arduino?
json
void toSerial(int delay_ms)
{
delay(delay_ms);
while(mySerial.available())
{
Serial.write(mySerial.read());
}
}
Serial.begin(9600);
mySerial.begin(9600);
mySerial.println("AT+HTTPINIT");
toSerial(500);
mySerial.println("AT+HTTPPARA=\"CID\", 1");
toSerial(500);
mySerial.println("AT+HTTPPARA=\"URL\", \"www.example.test\"");
toSerial(500);
mySerial.println("AT+HTTPPARA=\"CONTENT\", \"application/json\"");
toSerial(500);
mySerial.println("AT+HTTPACTION=0");
toSerial(4000);
mySerial.println("AT+HTTPREAD");
delay(3000);
while(mySerial.available())
{
Serial.write(mySerial.read());
}
Serial.println("");
mySerial.println("AT+HTTPTERM");
toSerial(500);
Результат:
AT+HTTPREAD
+HTTPREAD:39
{"pinRed":0,"pinGreen":1,"pinYello
Я ожидаю сообщений:
{"pinRed":0,"pinGreen":1,"pinYellow":0}
@wgerro, 👍2
Обсуждение1 ответ
▲ 1
Ладно, я нашел решение. Для начала вам нужно загрузить длину ответа сервера и выполнить цикл в соответствии с длиной ответа.
,
@wgerro
Смотрите также:
- NodeMCU (Arduino IDE) «DynamicJsonBuffer» не был объявлен в этой области
- Чтение файла из SPIFFS в nodemcu с использованием ArduinoJson
- Получение всех данных моего объекта JSON из Serial.read() сразу
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает
- Цикл foreach Arduino JSON
- Проанализировать большой ответ json с помощью ESP8266
- Публиковать данные json в mqtt
- ArduinoJSON v6 – передача буфера как параметра функции
Просто чтение последовательных данных происходит намного быстрее, чем они поступают. Таким образом, вы считываете все из буфера и очищаете его, чтобы available возвращал ноль до того, как все туда попадет. Вы можете проверить, что available дает вам достаточно большое число, чтобы вы знали, что все сообщение есть, прежде чем начать читать, или вы можете проанализировать свое сообщение, чтобы увидеть, все ли оно есть, прежде чем двигаться дальше. Если бы вы вернулись позже и прочитали еще немного о следующем цикле, вы бы увидели ":0} перед следующим сообщением. Он появился только после того, как ты перестал читать., @Delta_G
эй, как ты наконец добрался? не могли бы вы опубликовать окончательный код? Я уже несколько дней отчаиваюсь в деталях. Я был бы очень благодарен! Привет из Германии, @Severin Baumgartner