arduinoシリアルバッファをクリアする

arduino unoのシリアルバッファをクリアするには? これはgsmモジュールを使用してモバイルからSMSを使用してLEDをオン/オフするコードです

#include 
int Led=7;

SoftwareSerial mySerial(9, 10);

void setup()
{
  pinMode(Led,OUTPUT);
  mySerial.begin(9600);  //Setting the baud rate of GSM Module  
  Serial.begin(9600);   //Setting the baud rate of Serial Monitor (Arduino)
  delay(100);
}


void loop()
{
  if (mySerial.available()>0)
  {

  }
   switch(mySerial.read())
  {
    case 'a':
           digitalWrite(Led,HIGH);
           delay(10000);
           digitalWrite(Led,LOW);
           delay(100);
           break;

    case 'b' :
           digitalWrite(Led,LOW);
           break;


  }}

問題は、私はモジュールまたは接続がrestablishedそれは自動的にsms.Iがなくても私は完全に自分のコントロールにする必要がありますので、私はシリアルバッファをクリアする必要があります取得です。

0

2 答え

あなたが迷惑メールを受け取っている(ジャンクを読んでいる)場合、誤ってそれを受け取る可能性はほとんどないように、あなたが期待しているビットパターンを拡張することができます。

ユーザーLED = "0"、LED = "1"をトリガとして 'a'と 'b'そうすることで、あなたが探しているものがあなたが読んだ文字列の文字4から始まるかもしれないので、データの読み込みがずっと難しくなります。これは私があなたがする必要があると思います。

  1. それぞれのキャラクターを順番に読み込み、7になるまでバッファーに保存します。
  2. 最初の文字はLです。
  3. そうでない場合は最初の文字を削除し、バッファをシャッフルします 1つの場所に移動し、次の文字をロードしてから手順1に戻ります。
  4. そうだった場合は、次の文字が期待通りのものかどうかを確認します。
  5. 一致しない場合は、左側のすべての文字とこれを削除して、ステップ1に戻ります。
  6. 一致するトークンがある場合は解析し(1または0を取得)、アクションを実行します。
1
追加された

あなたはそれが空になるまでそれを読むことによってそれを単にクリアすることができます。

while(Serial.available()){
    Serial.read();
}

以前は

Serial.flush();

シリアルをクリアする。しかし、彼らはそれを他の機能に変更しました。詳細はシリアルのarduinoリファレンスページを参照してください。

0
追加された