Serial.readBytesUntil()

Last revision:2025/06/13

名称

Serial.readBytesUntil()

説明

Serial.readBytesUntil()は、シリアルバッファから文字列を配列に読み込む。この関数の終了条件は、以下の順である。指定した長さの文字列が読み込まれるか、タイムアウトすれば終了するか(Serial.setTimeout()参照)、終端文字を検出するか(この場合、指定した終端文字の直前までのデータが返却される)。終端文字自身は、バッファには含まれない。

Serial.readBytesUntil()は、Streamユーティリティクラスを継承している。

書式

シリアルポートから文字を読み込み、終端文字が見つかるまでバッファに格納するには、以下の関数を使う。

Serial.readBytesUntil(character, buffer, length)

C言語シグネチャ(avr)

size_t HardwareSerial::readBytesUntil(char terminator, char *buffer, size_t length);

引数

この関数は以下のオブジェクトと引数を受け付ける。

Serialシリアルポートオブジェクト。各ボードで利用可能なシリアルポートオブジェクトは、Serialを参照。
character, terminator終端文字。データ型: char
buffer文字列を格納するバッファ。データ型: charあるいはbyte配列。
length読み込む文字列の長さ。データ型: size_t

戻り値

バッファに読み込んだ文字列の長さ。0の場合は、lengthパラメータが0以下、入力があるまでにタイムアウトした、他の入力が来る前に終端文字が来た。データ型: size_t

コード例

以下のコードは、指定した文字が見つかるまで読み、データをバッファに格納し、表示する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
char message[20];  // Buffer to hold the message

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("Type a message (end with Enter):");
}

void loop() {
  if (Serial.available()) {
    int bytesRead = Serial.readBytesUntil('\n', message, sizeof(message) - 1);
    message[bytesRead] = '\0';  // Null-terminate the string

    Serial.print("You said: ");
    Serial.println(message);
  }
}

注意

読みこまれてバッファにコピーされた文字数がlengthと同じでない限り、終端文字はシリアルバッファから捨てられる。

参照

オリジナルのページ

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

実装の解析

まだ解析していません。

最終更新日

July 18, 2026

inserted by FC2 system