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().