serialEvent
Описание
Вызывается в конце loop(), когда есть доступные данные. Используйте Serial.read(), чтобы получить эти данные.
Обратите внимание: большинство современных плат не поддерживают этот метод. См. раздел «Примечания и предупреждения» ниже в этой статье.
Синтаксис
Используйте следующую функцию, чтобы выполнять что-либо в каждом цикле, если ещё есть доступные данные на последовательном порту.
void serialEvent() {
//statements
}
Платы Mega 2560 Rev3 и Due имеют дополнительные последовательные порты, к которым можно обращаться, добавляя соответствующий номер в конце имени функции.
void serialEvent1() {
//statements
}
void serialEvent2() {
//statements
}
void serialEvent3() {
//statements
}
Параметры
Эта функция не принимает параметров.
Возвращаемое значение
Функция ничего не возвращает.
Пример кода
Пример, демонстрирующий использование serialEvent.
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;
}
}
}
Примечания и предупреждения
Предупреждение
Обратите внимание, что serialEvent() не работает ни на одной из современных плат Arduino. Единственные подтверждённо поддерживающие её платы по состоянию на 2023/12/06 — это UNO R3, Nano, Mega 2560 Rev3 и Due.
Совет
Вместо этого можно использовать метод available(). Примеры на этой странице демонстрируют, как читать данные с последовательного порта только при их наличии — аналогично тому, как реализован Serial.event().