对不起我的英语不好。我正在尝试在我的 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不可用,下面的代码会导致崩溃while(serialSIM800.available()==0);
因为这总是正确的或者如果有错误并且OK
没有收到,则以下代码导致崩溃while(!(data[x-1]=='K'&&data[x-2]=='O'));
因为这总是正确的。最大数据长度为 120 字节,我应该怎么做才能从 Arduino 串口接收 Json 数据?谢谢你们。