NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(Serial.flush関数の使い方)

■Serial.flush関数
 Serial.flush関数は、データの送信がすべて完了するまで待ちます。 
Arduino 1.0より前のバージョンでは、受信バッファをクリアする仕様でした。 

■使用例
  Arduino IDEで使用するSerial.flush関数の使い方は以下の通りです。
 試しにこのプログラムをArduino UNOで実行すると、シリアルデータ94文字分送信前後で時間を計測します。
 Serial.flush関数無しでは、シリアルデータが送信中であっても次の命令に移る為「30ms」と早いです。
 Serial.flush関数有りでは、シリアルデータの送信が完了してから次の命令に移る為「164ms」と時間が掛かります。 

void setup() {
  delay(1000);
  Serial.begin(9600);
}

void loop() {
  //フラッシュ無し
  unsigned long Start = millis();
  for (int i = 33 ; i < 126; i++) {
    Serial.write(i); // 94文字送信
  }
  unsigned long Stop = millis();
  Serial.print(" NoFlash: ");
  Serial.print( Stop - Start);
  Serial.println(F("ms"));

  //フラッシュ有り
  Start = millis();
  for (int i = 33 ; i < 126; i++) {
    Serial.write(i); // 94文字送信
  }
  Serial.flush();
  Stop = millis();
  Serial.print(" WithFlash: ");
  Serial.print( Stop - Start);
  Serial.println(F("ms"));
  Serial.println();
  delay(5000);
}
イメージ 1
図1:プログラム例
 

イメージ 1
図2:プログラム実行結果

※図1,2の「With」と「No」が逆になっておりました「moharu」さんご指摘いただきありがとうございました。
 

■構文
 Serial.flush()

■パラメータ
 有りません

■戻り値
 有りません 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る