私はArduino UNO R3を使用しています。シリアル経由でGSMシールドにATコマンドを送信すると、Serial.available()から番号が増えます。ここでArduino 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-
...
なぜ利用可能なバイト数は63で出て30時からスタートし、その後、最大のでしょうか?これは、バッファ内のデータを消費するSerial.read()を使用している場合でも発生します。
EDIT:serialEvent()の完全なコンステインを追加しました。
コードスニペットに読み取りが表示されないため、結果が期待されます。モデム応答からのバイト数を数えます。 –
最終的に言及したように、結果は読み込みでも同じです。私はコードを編集して、私が読んだところで完全なコードを表示しました。 – BOMEz