Description

Serial.readBytesUntil() reads characters from the serial buffer into an array. The function terminates (checks being done in this order) if the determined length has been read, if it times out (see Serial.setTimeout()), or if the terminator character is detected (in which case the function returns the characters up to the last character before the supplied terminator). The terminator itself is not returned in the buffer.

Serial.readBytesUntil() inherits from the Stream utility class.

Syntax

Use the following function to read characters from the serial port and store them in a buffer until a terminator is found:

Serial.readBytesUntil(character, buffer, length)

Parameters

The function admits the following objects and parameters:

  • Serial: serial port object. See the list of available serial ports for each board on the Serial main page.

  • character: the character to search for. Allowed data types: char.

  • buffer: the buffer to store the bytes in. Allowed data types: array of char or byte.

  • length: the number of bytes to read. Allowed data types: int.

Returns

The function returns the number of characters read into the buffer. A 0 means that the length parameter <= 0, a time-out occurred before any other input, or a termination character was found before any other input. Data type: size_t.

Example Code

The following code reads until a given character is found and stores the data in a buffer to then print it:

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);
  }
}

Notes and Warnings

The terminator character is discarded from the serial buffer, unless the number of characters read and copied into the buffer equals length.

See also