serialEvent()

Last revision:2025/06/06

名称

serialEvent()

説明

データが利用可能な時にloop()の最後で呼び出される。このデータを取得するときは、Serial.read()を利用すること。

注意: 最新の多くのボードはこのメソッドをサポートしていない。このリファレンスの後半にある、注意を参照すること。

書式

各ループの最後で、シリアルデータが利用可能な場合は、以下の関数を使う。

1
2
3
void serialEvent() {
  //statements
}

Mega 2560 Rev3とDueボードでは、追加のシリアルポートを持っていて、関数の後に対応する番号を追加することでアクセスできる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
void serialEvent1() {
  //statements
}

void serialEvent2() {
  //statements
}

void serialEvent3() {
  //statements
}

引数

なし。

戻り値

なし。

コード例

serialEventの利用例を示す。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
String inputString = "";
bool stringComplete = false;

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println("Type something and press Enter:");
}

void loop() {
  if (stringComplete) {
    Serial.print("You entered: ");
    Serial.println(inputString);
    inputString = "";
    stringComplete = false;
  }
}

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    if (inChar == '\n') {
      stringComplete = true;
      break;
    } else {
      inputString += inChar;
    }
  }
}

注意

最新のArduinoボードでは、serialEvent()は動作しない。2023/12/06現在、このメソッドをサポートしているボードは、UNO R3とNano、Mega 2560 Rev3とDueである。

その代わり、available()メソッドを利用することができる。このページの例で、利用可能な場合にだけシリアルデータを読み込む例を示している。Serial.event()を実装するのと同様である。

参照

訳者註

この関数は、必要に応じて自分で定義する関数です。シリアル通信の受信バッファにデータがあるとき、loop()関数が終了して次のloop()を開始する前に呼び出されます。具体的には、以下のように実装されていて、serialEventRun()の中で、serialEvent()等が呼び出されます。

1
2
3
4
for (;;) {
  loop();
  if (serialEventRun) serialEventRun();
}

オリジナルのページ

https://docs.arduino.cc/language-reference/en/functions/communication/serial/serialEvent/

実装の解析

まだ解析していません。

最終更新日

August 16, 2026

inserted by FC2 system