SerialEvent

Материал из MK90.ORG wiki
Версия от 10:45, 5 мая 2012; Id (обсуждение | вклад) (Новая страница: «{{ArduinoRefLib|SerialEvent|SerialEvent|serialEvent()}} Специальная функция, которая вызывается в момент поступле...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Справка Язык | Библиотеки | Сравнение | Изменения

SerialEvent

serialEvent()

Описание

Специальная функция, которая вызывается в момент поступления данных из последовательного порта (т.н. callback-функция). Данные можно затем прочитать с помощью функции Serial.read().

Синтаксис


void serialEvent(){
//операторы
}

Только для Arduino Mega:

void serialEvent1(){
//операторы
}

void serialEvent2(){
//операторы
}

void serialEvent3(){
//операторы
}

Параметры

операторы: любой корректно выполняемый код

Примеры


/*
 Пример Serial Event
 
 В момент поступления данных из последовательного порта,
 скетч добавляет их к строке типа String. При получении символа 
 новой строки, в содержимое распечатывается в цикле, а затем обнуляется.
 
 Создано 9 Мая 2011
 Том Айго
  
 http://www.arduino.cc/en/Tutorial/SerialEvent
 
 */

String inputString = "";         // строка, в которой накапливаются поступающие данные 
boolean stringComplete = false;  // признак завершенности строки

void setup() {
  // инициализируем последовательный порт
  Serial.begin(9600);
  // резервируем 200 байт во входной строке:
  inputString.reserve(200);
}

void loop() {
  // распечатать строку, если получен признак завершения:
  if (stringComplete) {
    Serial.println(inputString); 
    // очистить строку:
    inputString = "";
    stringComplete = false;
  }
}
/*
 SerialEvent вызывается при поступлении новых данных из 
 последовательного порта. Проверка производится по выполнению
 очередного цикла loop, поэтому задержка внутри loop может замедлить 
 скорость реакции на поступающие данные. Возможно поступление нескольких
 байт одновременно.
 */
void serialEvent() {
  while (Serial.available()) {
    // получить очередной байт:
    char inChar = (char)Serial.read(); 
    // добавить его к inputString:
    inputString += inChar;
    // если входной символ - признак новой строки, установить флаг
    if (inChar == '\n') {
      stringComplete = true;
    } 
  }
}


Руководство по Wiring


Исправления, пожелания и новые статьи должны быть опубликованы через Форум.

Оригинальные тексты руководств и переводы распространяются Arduino и MK90 на условиях лицензии Creative Commons Attribution-ShareAlike 3.0 License. Примеры исходных кодов и ссылки являются общественным достоянием.