次のようなデバイス (SIM900) からの応答を解析する必要があります。
\r\n+CIPRXGET:1
+CIPRXGET: 2,1,3
DATA COMPOSED BY A WHITESPACE AND MAYBE OTHER
OK
そのため、sscanf を 2 回使用します。1 回目は最終文字列「OK」を削除し、2 回目はデータを解析します。
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」(または 16 進表現で「0x0D 0x0A 0x20 0x0D 0x0A」) というダーティな出力が得られました。
すべてを試しましたが、空白文字のみを出力バッファーに正しく解析できません。