Монитор порта — получение и использование

Монитор портаВ этой статье мы покажем, как отправить данные в скетч Arduino с помощью Монитор порта. Да, данные могут быть отправлены в Arduino из окна терминала Монитор порта в среде Arduino IDE.

Пользователь может вводить данные в поле ввода в окне Монитор порта для отправки значений и данных в Arduino. Любая последовательная программа или даже пользовательское последовательное приложение может использоваться для отправки данных в Arduino вместо использования окна Монитор порта.

За исключением статьи «Операторы переключения и прерывания в Ардуино«, окно Монитор порта использовалось только для вывода. Оно использовалось для отображения результатов или выводов из различных примеров скетчей в каждой статье по программированию. Давайте теперь посмотрим, как обрабатывать информацию как через последовательный ввод, так и вывод.

Получение ввода

В следующем скетче показано, как получить один символ из окна Монитор порта и определить, является ли этот символ числом или нет.

Как работает скетч

Проверка символа

В основном цикле Arduino ( функция loop () ) оператор if используется для проверки того, доступен ли символ , т.е. был ли символ отправлен из окна Монитор порта и получен самим Arduino.

Этот оператор if выполняется быстро для того, чтобы запустить оператор if и вернуться в начало цикла, чтобы запустить его снова.

Ничто больше в теле оператора if не запускается, пока не будет получен символ.

Получение символа

Когда символ принимается Ардуино, он сохраняется в символьной переменной (типа char ), называемой rx_byte.

Копия полученного символа теперь сохраняется в переменной rx_byte, и мы можем использовать полученный символ в нашем скетче.

Проверьте, является ли полученный символ числом

Скетч проверяет, является ли полученный символ числом, проверяя, больше ли символ «0» и меньше или равен «9».

Фактически мы проверяем номера символов от «0» до «9», а не действительные целые числа от 0 до 9. Это связано с тем, что данные, полученные из окна Монитор порта, имеют формат ASCII.

Из таблицы, которая показывает печатаемые символы ASCII, мы видим, что символ ASCII ‘0’ имеет целое число 48 десятичных, а символ ASCII ‘9’ имеет десятичное значение 57. Другими словами, если набирать ‘0’ на клавиатуре и щелкнуть по кнопке «Отправить», на Arduino будет отправлено целочисленное значение 48. В скетче мы можем обозначить этот символ как «0» или «48».

Тот же оператор if может быть записан с использованием десятичных целых чисел следующим образом:

Этот код будет делать то же самое, что и версия выше, которая проверяет символы.

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

Получение ввода

Предыдущий скетч использовался для получения и обработки одного символа за раз. Было бы более полезно, если бы мы могли получать всю строку за раз, тогда мы могли бы получить имя в качестве входных данных или число, состоящее из более чем одной цифры.

Нахождение конца строки

Строка — это серия символов. Чтобы иметь возможность читать строку из окна Монитор порта в Arduino, нам нужно знать, когда строка заканчивается. Один из способов сделать это — вставить символ новой строки в конец строки. Символ новой строки — это непечатаемый символ ASCII, который в таблице управляющих кодов ASCII называется «перевод строки».

Символ перевода строки имеет десятичное значение, но может быть записан как: ‘\ n’.

Следующий скетч является измененной версией предыдущего скетча. Помимо проверки того, получено ли число или не число, он также проверяет, получен ли символ новой строки.

Когда скетч запущен и символ отправляется из окна Монитор порта, необходимо изменить настройку в нижней части окна Монитор порта, чтобы к отправляемому символу добавлялся символ новой строки, как показано на изображении под скетчем.

Перед запуском скетча убедитесь, что в окне Монитор порта Arduino установлено значение «Новая строка», как показано на этом изображении:

Новая строка из окна монитор порта

Когда в окне Монитор порта установлено «Новая строка», после того, что вводится в поле «отправить» окна Монитор порта, будет следовать символ новой строки.

Еще, else используется для тестирования, если символ новой строки был получен, как показано в этой строке кода.

Этот код проверяет наличие символа новой строки, представленного ‘\ n’, и выводит «Новая строка» в окно Монитор порта, если он обнаружен.

Чтение строки

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

Каждый отдельный символ строки принимается так же, как и в предыдущих скетчах, и сохраняется в переменной rx_byte.

Если символ не равен символу новой строки, он добавляется к объекту String rx_str

Строка кода rx_str + = rx_byte; такая же как:

Код просто помещает каждый символ в конец строки, чтобы построить строку из полученных символов.

После того, как строка будет собрана, будет получен символ новой строки, который затем запустит оператор else, и полученная строка будет напечатана в окне Монитор порта как часть приветственного сообщения.

Получение числа

Когда число получено из окна Монитор порта, оно представляет собой строку числовых символов и должно быть преобразовано в число, которое может быть сохранено в числовой переменной, таких как integer или int.

В следующем скетче проверяется, являются ли полученные символы числовыми, а затем число преобразуется в целое число.

Создание строки

Строка состоит из полученных символов, как это было сделано в предыдущем скетче. Если какой-либо полученный символ не является номером символа, для переменной not_number устанавливается значение истина, чтобы «пометить», что был получен нечисловой символ.

Использование логического флага

Переменная Not_number имеет тип boolean, которое может иметь только значение истинным или ложным. В скетче эта переменная используется как флаг, который позже проверяется, чтобы увидеть, были ли получены какие-либо нечисловые символы.

После получения полной строки, проверяется флаг not_number и отображается сообщение, если какой-либо полученный символ не был числом.

Обработка строки

Если все полученные символы были числами, строка преобразуется в целое число с помощью rx_str. toInt (), умноженное на 2 и результат, сохраненный в переменной результата. Результат расчета затем печатается в окне Монитор порта.

Ограничения скетча

У этого скетча есть некоторые ограничения. Мы не можем получить результат, когда на Arduino отправлено отрицательное число, потому что знак минус активирует флаг not_number. Размер числа, которое можно умножить, также ограничен размером положительного целого числа на Arduino.

Вывод

В этой статье мы рассмотрели способы получения символов на примере трех различных программ. Если вам что-то было не понятно, то советуем изучить эту статью еще раз. Не забывайте писать скетчи вручную и ни в коем случае не копируйте. Слепое копирование не поможет вам в понимании и запоминании работы функций и самой программы. Удачи вам в изучении программирования на Ардуино.

С Уважением, МониторБанк

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *