Arduino:Примеры/Эхо данных последовательного порта

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

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



Эхо данных последовательного порта

Данный пример демонстрирует вывод данных,отправляемых через последовательный порт с помощью монитора порта.

При приеме данных по последовательному соединению, Arduino помещает данные в буфер. Отправив несколько байт данных через последовательный порт на Arduino, Arduino поставит их в очередь и обработает их согласно алгоритму программы. Отправка слишком большого объема данных может привести к переполнению буфера и потери данных.

В данном примере для работы с последовательным портом используются 4 функции:

  • Serial.begin() - инициализирует последовательное соединение;
  • Serial.available() - возвращает число символов(байтов), которые в данный момент находятся в буфере Arduino.
  • Serial.read() - считывает и возвращает следующий символ из буфера.
  • Serial.print - вывод данных в последовательный порт.

При вызове функции Serial.read(), она возвратит только один байт из буфера, поэтому ее вызов мы будем повторять до тех пор пока вызов Serial.available() возвращает ненулевое значение.

Загрузите скетч в Arduino и запустите монитор последовательного порта. Напечатайте что-нибудь в поле ввода текста и нажмите "Отправить". Все что вы набрали вернется назад в компьютер и отобразится в окне монитора последовательного порта.

Если в окне монитора порта, в раскрывающемся списке вы выбрали опцию "NL (Новая строка)", то к концу строки, которую вы отправляете на Arduino, автоматически будет добавляться символ перевода строки "\n". Поэтому даже используя Serial.print вместо Serial.println каждый ответ будет отображаться с новой строки.

Необходимые компоненты

Монтажная схема

Для данного примера не нужно собирать схему.

Код

char data;                        // хранит текущий входящий символ

void setup()
{
  Serial.begin(9600);             // инициализация последовательного соединения на скорости 9600 бод
}

void loop()
{
  // Вывод только при получении данных
  if (Serial.available() > 0)
  {
    data = Serial.read();        // читаем байт из буфера
    Serial.print(data);          // выводим байт в последовательный порт
  }
}

См.также

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