私は Arduino UNO R3 を使用しています。AT コマンドをシリアル経由で GSM シールドに送信すると、Serial.available() から増加する数値が取得されます。
デバッグに使用した例を次に示します。
void loop()
{
Serial.println("AT+CADC?");
delay(3000);
}
void serialEvent()
{
char * sensorValue;
int serial = Serial.available();
Serial.print("-");
Serial.print(serial);
Serial.println("-");
if(serial >0)
{
sensorValue = (char*) malloc(sizeof(char) * (serial +1));
int i;
for(i = 0; i < serial; i++)
{
sensorValue[i] = Serial.read();
//Serial.print(sensorValue[i]);
}
sensorValue[serial+1] = '\0';
Serial.print(sensorValue);
}
delay(2000);
}
シリアルモニターから得た結果は次のとおりです。
-30-
-63-
-63-
-63-
...
使用可能なバイト数が 30 から始まり、63 で最大になるのはなぜですか? これは、バッファ内のデータを消費する必要がある Serial.read() を使用した場合でも発生します。
編集: serialEvent() の完全なコンテンツを追加しました。