Извините за мой слабый английский. Я пытаюсь получить данные JSON от Sim800 на моем Arduino. Для чтения данных по последовательному порту я использовал следующий код:
while(serialSIM800.available()==0); //Wait until the data is received
String content = "";
while(serialSIM800.available()>0){ // When data is received
content = content + char(char (serialSIM800.read()));
}
Serial.print(content);
Но неполные данные получены. Следующим образом:
{"id":"1212","temp":"24","hum","4
Для лучшего результата я использовал следующий код:
byte x;
char data[128];
void sim800Reply() {
x=0;
do{
while(serialSIM800.available()==0);
data[x]=serialSIM800.read();
Serial.print(data[x]);
x++;
} while(!(data[x-1]=='K'&&data[x-2]=='O'));
}
Данные полностью получены. Следующим образом:
{"id":"1212","temp":"24","hum","45","date":"11.2018","status":"200"}
OK
Но Я думаю этот код не годится и возникают проблемы. Например, если serialSIM800 недоступен, например, когда sim800 не подключены, следующий код вызывает сбой while(serialSIM800.available()==0);
Потому что это всегда верно ИЛИ Если есть ошибка и OK
не был получен, следующий код вызывает сбой while(!(data[x-1]=='K'&&data[x-2]=='O'));
Поскольку это всегда так. Максимальная длина данных составляет 120 байтов, что я должен сделать, чтобы получить Json данные из сериала Arduino? Спасибо всем.