Каталог товаров

Разработка с использованием командной строки

Разработка программ для Omega с использованием командной строки - практичный вариант с мощными инструментами, который поначалу может показаться нетривиальным. Это пособие поможет начать разработку кода в командной строке Omega.

Напишем скрипт, который заставит мигать светодиодом Omega по азбуке Морзе на основе ввода пользователя.

Мигание светодиодом МОрзе

Необходимые условия

Чтобы разрабатывать программы в командной строке, потребуется доступ к терминалу, поэтому нужно установить SSH-соединение либо подключение через serial-порт.

Чтобы узнать больше о том, как подключиться к командной строке Omega, можете прочитать руководство по подключению к Omega.

Управление светодиодом c терминала

Откройте терминал и войдите под своими учетными данными. Значения по умолчанию:

имя пользователя: root

пароль: onioneer

Omega поставляется с ядром, способным переводить текст в азбуку Морзе и мигать светодиодами, но нужно сообщить ядру, какой светодиод должен мигать. Ядро предоставляет множество аппаратных состояний и параметров конфигурации через виртуальную файловую систему в /sys.

> Файлы в каталоге /sys на самом деле не являются файлами, но они выглядят и действуют как файлы, что упрощает доступ к ним из командной строки, в скриптах или программах.

Чтобы сообщить ядру, что вы собираетесь использовать модуль азбуки Морзе, установите условие запуска светодиодов morse с помощью команды echo для записи настройки в виртуальный файл:

echo morse > /sys/class/leds/omega2:amber:system/trigger

Если вы используете Omega2+, светодиод будет называться omega2p:amber:system, а не omega2:amber:system, поэтому перепишите команду: /sys/class/leds/omega2p:amber:system/trigger

В зависимости от того, какой терминал вы используете, комбинация клавиш для вставки может быть не Ctrl + v или Cmd + v на Mac. Некоторые терминальные программы Windows используют Ctrl + Shift + v для вставки.

Можете убедиться, что это сработало, используя cat для просмотра виртуального файла:

root@Omega-2757:~# cat /sys/class/leds/omega2:amber:system/trigger

none mmc0 timer default-on netdev transient gpio heartbeat [morse] oneshot

Квадратные скобки указывают, что выбран триггер morse. Текст в этом файле показывает и другие доступные опции.

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

echo Hello, Onion > /sys/class/leds/omega2:amber:system/message

Проследите за светодиодом. Если он слишком быстрый или слишком медленный, можно изменить скорость с помощью delay файла:

root@Omega-12D9:~# cat /sys/class/leds/omega2:amber:system/delay

50

Чтобы немного замедлить, введите:

root@Omega-12D9:~# echo 100 > /sys/class/leds/omega2:amber:system/delay

Сообщение будет повторяться до тех пор, пока вы это не измените. Чтобы остановить, можно очистить сообщение:

echo > /sys/class/leds/omega2:amber:system/message

или замените светодиодный триггер:

echo default-on > /sys/class/leds/omega2:amber:system/trigger

Shell-сценарий в терминале с использованием vi

Unix Shell - это интерпретатор, который считывает команды из командной строки и выполняет их. Shell Script - это способ написания более сложных программ с помощью этих базовых команд. По сути, мы собираемся использовать те же команды из предыдущего раздела, чтобы создать программу, которая будет читать сообщение, а затем мигать этим сообщением азбукой Морзе.

Создайте файл с morse.sh в корневом каталоге, используя команду:

vi /root/morse.sh

Откройте пустой файл.

Скопируйте приведенный ниже код в терминал.

#!/bin/sh

 

# find the name of the board, to be used in the name of the LED

. /lib/ramips.sh

board=$(ramips_board_name)

 

# define the function that will set the LED to blink the arguments in morse code

_MorseMain () {

 

    echo morse > /sys/class/leds/$board:amber:system/trigger

    echo 120 > /sys/class/leds/$board:amber:system/delay

    echo $* > /sys/class/leds/$board:amber:system/message

}

 

 

##### Main Program #####

 

# run the function and pass in all of the arguments

_MorseMain $*

 

exit

Эта блок-схема показывает шаги, которые выполняет функция _MorseMain:

Блок схема морзе

Основная часть программы вызовет функцию и передаст все аргументы командной строки.

Теперь, чтобы сохранить файл, вам нужно войти в командный режим (Command Mode), нажав кнопку ESC на клавиатуре.

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

Введите :wq и нажмите Enter, чтобы сохранить и выйти из файла.

Морзе командная строка

Теперь можно конвертировать текст в азбуку Морзе.

Запуск скрипта в терминале

Чтобы запустить скрипт, введите:

sh /root/morse.sh

Введите сообщение, которое хотите показать азбукой Морзе:

root@Omega-2757:~# sh /root/morse.sh Hello Onion

Когда закончите, можете установить мигание по умолчанию (default-on) с помощью команды:

echo default-on > /sys/class/leds/omega2:amber:system/trigger

Помните, что в Omega2+ светодиод будет называться omega2p:amber:system (а не omega2:amber:system), поэтому вам придется переписать команду: /sys/class/leds/omega2p:amber:system/trigger

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2021г https://compacttool.ru