【发布时间】:2018-11-08 19:10:29
【问题描述】:
对不起我的英语不好。我正在尝试在我的 Arduino 上接收来自 Sim800 的 json 数据。要读取串行端口上的数据,我使用了以下代码:
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
但是我认为这段代码不好,有问题。例如如果没有连接sim800的时候serialSIM800不可用,下面的代码会导致crash while(serialSIM800.available()==0); 因为这个永远是真的 OR 如果有错误并且OK 没有收到,下面的代码会导致崩溃 while(!(data[x-1]=='K'&&data[x-2]=='O')); 因为这个永远是真的。最大数据长度是120字节,我该怎么办才能收到来自 Arduino 串行的 Json 数据?谢谢大家。
【问题讨论】:
标签: json arduino avr sim800 software-serial