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

Arduino:Примеры/ConsoleRead

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

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

Контакты:

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


Считывание текста в консоли [1]

Данный пример показывает, как сделать так, чтобы Arduino Yun при помощи функции Console.read() считывать данные, идущие от Bridge, а затем записывать их в строку.

Чтобы увидеть консоль, откройте Arduino IDE и, зайдя в пункт меню Tools > Port, выберите для Yun имя и IP-адрес. После этого откройте Port Monitor. Кроме того, консоль можно увидеть, открыв окно терминала, вписав ssh root@ yourYúnsName.local 'telnet localhost 6571' и нажав Enter. Когда у вас попросят пароль, впишите его.

Запуская скетч, убедитесь, что компьютер и Yun находятся в одной беспроводной сети.

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

  • Плата Arduino Yun;
  • Компьютер и Arduino должны находиться в одной сети;

Цепь

Для этого примера цепи строить не нужно.

Код

Подключаем класс Console (он является наследником Bridge).

  1. #include <Console.h>

Создаем строку, в которой будем хранить информацию, присланную от Bridge.

  1. String name;

В секции setup() инициализируем Console и Bridge. Ждем подключения консоли, а затем запрашиваем информацию.

  1. void setup() {
  2.   Bridge.begin();
  3.   Console.begin();
  4.  
  5.   while (!Console);
  6.  
  7.   Console.println("Hi, what's your name?");  // "Привет, как тебя зовут?"
  8. }

В секции loop() проверяем, есть ли какие-нибудь байты в буфере консоли. Если есть, считываем самый старый символ в локальную переменную.

  1. void loop() {
  2.   if (Console.available() > 0) {
  3.     char c = Console.read();

Если этим символом является символ новой строки («\n»), то это самый последний символ пришедшей строки. Выводим на консоль сообщение, запрашиваем еще информации, очищаем строку.

  1. if (c == '\n') {
  2.       Console.print("Hi ");  // "Привет "
  3.       Console.print(name);
  4.       Console.println("! Nice to meet you!");  // "! Приятно познакомиться!"
  5.       Console.println();
  6.       Console.println("Hi, what's your name?");  // "Привет, как тебя зовут?"
  7.       name = "";
  8.     }
  9. }

Если в пришедшей строке нет символа новой строки, то добавляем его к концу строки.

  1. else {      
  2.       name += c;
  3.     }
  4.   }
  5. }

Весь скетч полностью – ниже:

  1. /*
  2.   Считывание текста в консоли
  3.  
  4.   Считывает данные, идущие от Bridge, при помощи функции Console.read(),
  5.   а затем записывает их в строку.
  6.  
  7.   Чтобы увидеть консоль, откройте меню Port, впишите имя и IP-адрес Yun, а затем откройте Port Monitor.
  8.  
  9.  Кроме того, консоль можно увидеть, открыв окно терминала и вписав
  10. ssh root@ yourYunsName.local 'telnet localhost 6571', а затем нажав Enter.
  11.  Когда вас попросят о введении пароля, введите его.
  12.  
  13.  Создан 13 июня 2013 Анжело Сцилабба (Angelo Scialabba)
  14.  модифицирован 16 июня 2013 Томом Иго (Tom Igoe).
  15.  
  16.  Этот код не защищен авторским правом.
  17.  
  18.  */
  19.  
  20. #include <Console.h>
  21.  
  22. String name;
  23.  
  24. void setup() {
  25.   // Инициализируем Console и ждем открытия порта:
  26.   Bridge.begin();
  27.   Console.begin();
  28.  
  29.   // Ждем открытия порта консоли:
  30.   while (!Console);
  31.  
  32.   Console.println("Hi, what's your name?"); // "Привет, как тебя зовут?"
  33. }
  34.  
  35. void loop() {
  36.   if (Console.available() > 0) {
  37.     char c = Console.read(); // считываем следующий символ
  38.     // Ищем, нет ли символа новой строки.
  39.     // Это должен быть последний символ в строке.
  40.     if (c == '\n') {
  41.     // Выводим на консоль текст с присланным именем:
  42.       Console.print("Hi ");  // "Привет "
  43.       Console.print(name);
  44.       Console.println("! Nice to meet you!");  // "! Приятно познакомиться!"
  45.       Console.println();
  46.       // Запрашиваем имя еще раз и очищаем старое имя:
  47.       Console.println("Hi, what's your name?");  // "Привет, как тебя зовут?"
  48.       name = "";  // очищаем строку с именем
  49.     }
  50.     else {       // если буфер пуст, Cosole.read() возвращает -1
  51.       name += c; // добавляем к строке с именем символ новой строки
  52.     }
  53.   }

См.также

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

  1. Arduino - Console Read