■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:プログラム例
図2:プログラム実行結果
※図1,2の「With」と「No」が逆になっておりました「moharu」さんご指摘いただきありがとうございました。
■構文
Serial.flush()
■パラメータ
有りません
■戻り値
有りません
励みになりますのでよければクリック下さい(^o^)/