我需要解析来自设备(SIM900)的响应,如下所示:
\r\n+CIPRXGET:1
+CIPRXGET: 2,1,3
DATA COMPOSED BY A WHITESPACE AND MAYBE OTHER
OK
所以我使用 sscanf 两次:第一次删除最后的字符串“OK”,第二次解析数据。
char buffer[256] = sim900.getResponse();
char data[256];
int bytesRead, bytesToRead;
sscanf(buffer, "%[^OK]", buffer);
sscanf(buffer, "%*s,%d,%d\r\n%[^\\0]", &bytesRead, &bytesToRead, data);
我的响应以空格(字符 0x20)开头,我得到了一个脏输出,即“\r\n \r\n”(或十六进制表示“0x0D 0x0A 0x20 0x0D 0x0A”)。
我尝试了所有方法,但无法仅将空格字符正确解析到输出缓冲区中。