Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/SerialEvent

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция SerialEvent [1]

Демонстрирует использование функции SerialEvent(). Она вызывается после loop() – в том случае, если в буфере последовательного порта есть какие-нибудь данные.

Необходимое оборудование

  • Плата Arduino;

Цепь

Arduino bb.png

Никакой, но Arduino должна быть подключена к компьютеру.

Код

  1. /*
  2.   Пример использования Serial Event
  3.  
  4.   По прибытии новых данных скетч добавляет их к строке. Если получен символ новой строки, программа покажет строку, а потом очистит ее.
  5.  Этот пример можно попробовать вместе с GPS-ресивером,
  6. отсылающим данные типа NMEA 0183.
  7.  
  8.  Создан 9 мая 2011 Томом Иго (Tom Igoe).
  9.  
  10.  Этот код не защищен авторским правом.
  11.  
  12.  http://www.arduino.cc/en/Tutorial/SerialEvent
  13.  
  14.  */
  15.  
  16. String inputString = "";         // строка, в которую будут записываться входящие данные
  17. boolean stringComplete = false;  // заполнилась ли строка или нет
  18.  
  19. void setup() {
  20.   // инициализируем последовательную передачу данных:
  21.   Serial.begin(9600);
  22.   // «бронируем» 200 байт для inputString:
  23.   inputString.reserve(200);
  24. }
  25.  
  26. void loop() {
  27.   // если прибыл символ новой строки, показываем строку:
  28.   if (stringComplete) {
  29.     Serial.println(inputString);
  30.     // очищаем строку:
  31.     inputString = "";
  32.     stringComplete = false;
  33.   }
  34. }
  35.  
  36. /*
  37.   Функция SerialEvent используется всякий раз при получении
  38. новых данных через последовательный порт. Она запускается
  39. при каждом запуске нового цикла, поэтому использование задержки
  40. может затормозить ответ. Позволяет передавать сразу несколько байтов.
  41.  
  42.  */
  43. void serialEvent() {
  44.   while (Serial.available()) {
  45.     // получаем новый байт:
  46.     char inChar = (char)Serial.read();
  47.     // добавляем его к inputString:
  48.     inputString += inChar;
  49.     // если получили символ новой строки, оповещаем программу об этом,
  50.     // чтобы она могла принять дальнейшие действия.
  51.     if (inChar == '\n') {
  52.       stringComplete = true;
  53.     }
  54.   }
  55. }

См.также

  1. serialEvent()

Внешние ссылки

  1. Arduino - SerialEvent