Serial.readBytesUntil()
Описание
Serial.readBytesUntil() читает символы из буфера последовательного порта в массив. Функция завершается (проверки выполняются в этом порядке), если прочитано заданное количество символов, истёк тайм-аут (см. Serial.setTimeout()) или обнаружен символ-завершитель (в этом случае функция возвращает символы вплоть до последнего символа перед указанным завершителем). Сам завершитель в буфер не возвращается.
Serial.readBytesUntil() наследуется от служебного класса Stream.
Синтаксис
Используйте следующую функцию для чтения символов из последовательного порта и сохранения их в буфере до тех пор, пока не будет найден символ-завершитель:
Serial.readBytesUntil(character, buffer, length)
Параметры
Функция принимает следующие объекты и параметры:
Serial: объект последовательного порта. Список доступных последовательных портов для каждой платы см. на главной странице Serial.character: символ, который нужно искать. Допустимые типы данных:char.buffer: буфер для сохранения байтов. Допустимые типы данных: массивcharилиbyte.length: количество байт для чтения. Допустимые типы данных:int.
Возвращаемое значение
Функция возвращает количество символов, прочитанных в буфер. 0 означает, что параметр length <= 0, тайм-аут произошёл до получения других входных данных, либо символ-завершитель был обнаружен до получения других входных данных. Тип данных: size_t.
Пример кода
Следующий код читает данные до тех пор, пока не будет найден заданный символ, сохраняет их в буфере, а затем выводит:
char message[20]; // буфер для хранения сообщения
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'; // завершить строку нулевым символом
Serial.print("You said: ");
Serial.println(message);
}
}
Примечания и предупреждения
Примечание
Символ-завершитель отбрасывается из буфера последовательного порта, если только количество прочитанных и скопированных в буфер символов не равно length.