Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
Serial.flush()/HardwareSerial::flush()

Serial.flush()/HardwareSerial::flush()

概要

Serial.flush()/HardwareSerial::flush()は、シリアル通信の送信バッファが空になるのを待ちます。リファレンスはこちら

ソースコード

HardwareSerial::flush(). は、hardware/arduino/cores/arduino/HardwareSerial.cppに定義されています。以下に全ソースコードを示します。

void HardwareSerial::flush()
{
  // UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT
  while (transmitting && ! (*_ucsra & _BV(TXC0)));
  transmitting = false;
}

入力はありません。戻り値もありません。

void HardwareSerial::flush()
{

transmittigが0でなく(write()の中でtrueに設定しています)、UCSR0AレジスタのTXC0ビットが0の間、待ちます。その後、transmittingをfalseにします。_BV()は、指定したビット数だけ1を左シフトする関数です。

  while (transmitting && ! (*_ucsra & _BV(TXC0)));
  transmitting = false;

能動的にバッファを送信するのではなく、バッファが送信されるのを待つ関数です。

バージョン

Arduino 1.0.5



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2012 garretlab all rights reserved.
inserted by FC2 system