Arduino:Примеры/SerialEvent: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


== Функция SerialEvent <ref>[http://www.arduino.cc/en/Tutorial/SerialEvent Arduino - SerialEvent]</ref>==
= Функция SerialEvent <ref>[http://www.arduino.cc/en/Tutorial/SerialEvent Arduino - SerialEvent]</ref>=


Демонстрирует использование функции '''SerialEvent()'''. Она вызывается после [[Arduino:Справочник языка Arduino/loop()|loop()]] – в том случае, если в буфере последовательного порта есть какие-нибудь данные.  
Демонстрирует использование функции [[Arduino:Справочник языка Arduino/Библиотеки/Serial/serialEvent()|serialEvent()]]. Она вызывается после [[Arduino:Справочник языка Arduino/loop()|loop()]] – в том случае, если в буфере последовательного порта есть какие-нибудь данные.  


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


* Плата '''Arduino''';
* [[Arduino:Продукты/Продукты Arduino|Плата Arduino]] - 1шт.


== Цепь ==
== Цепь ==


[[Файл:Arduino bb.png]]
[[Файл:Arduino bb.png|center|frame|'''Рис. 1.''' Для этого примера необходима только плата Arduino.|alt=Рис. 1. Для этого примера необходима только плата Arduino.]]


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


== Код ==
== Код ==


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
   Пример использования Serial Event  
   Пример использования Serial Event  
Строка 77: Строка 77:
</syntaxhighlight>
</syntaxhighlight>


== См.также==
= См.также=


# serialEvent()
# [[Arduino:Справочник языка Arduino/Библиотеки/Serial/serialEvent()|serialEvent()]]


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


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}
[[Категория:Пример]]
[[Категория:Пример]]
[[Категория:Примеры]]
[[Категория:Примеры]]
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]

Текущая версия от 09:25, 24 февраля 2023

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


Функция SerialEvent [1]

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

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

Цепь

Рис. 1. Для этого примера необходима только плата Arduino.
Рис. 1. Для этого примера необходима только плата Arduino.

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

Код

/*
  Пример использования Serial Event 
 
  По прибытии новых данных скетч добавляет их к строке. Если получен символ новой строки, программа покажет строку, а потом очистит ее. 
 Этот пример можно попробовать вместе с GPS-ресивером, 
отсылающим данные типа NMEA 0183.
 
 Создан 9 мая 2011 Томом Иго (Tom Igoe).
 
 Этот код не защищен авторским правом. 
 
 http://www.arduino.cc/en/Tutorial/SerialEvent
 
 */

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

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

void loop() {
  // если прибыл символ новой строки, показываем строку:
  if (stringComplete) {
    Serial.println(inputString); 
    // очищаем строку:
    inputString = "";
    stringComplete = false;
  }
}

/*
  Функция SerialEvent используется всякий раз при получении
новых данных через последовательный порт. Она запускается
при каждом запуске нового цикла, поэтому использование задержки 
может затормозить ответ. Позволяет передавать сразу несколько байтов.

 */
void serialEvent() {
  while (Serial.available()) {
    // получаем новый байт:
    char inChar = (char)Serial.read(); 
    // добавляем его к inputString:
    inputString += inChar;
    // если получили символ новой строки, оповещаем программу об этом,
    // чтобы она могла принять дальнейшие действия.
    if (inChar == '\n') {
      stringComplete = true;
    } 
  }
}

См.также

  1. serialEvent()

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