В этой статье показано, как использовать команды запуска Omega сразу после завершения загрузки. Эту функцию можно использовать по-разному: например, показ приветственного сообщения в расширении OLED, когда Omega загрузился, или подключение к серверу. Настройка довольно простая: поехали!
Мы начнем с написания скрипта, который будет выполнять те действия, которые мы хотели бы выполнять после каждой загрузки. Если у вас уже есть скрипт или команда, которую вы хотите запустить при загрузке, вы можете пропустить шаг «Написание сценария оболочки».
Давайте создадим наш скрипт в каталоге /root и назовем его rgb-led.sh:
vi /root/rgb-led.sh
Каталог /root - это лучшее место для размещения ваших проектов, чтобы они не удалялись при обновлении прошивки.
Теперь давайте напишем небольшой скрипт мигания красным, затем зеленым, затем синим светодиодом RGB на Expansion Dock, и на случай, если вы пропустите первое мигание, он помигает еще раз через 5 секунд, а затем выключится.
Вот как это выглядит:
#!/bin/sh -e
expled 0xff0000 #Red
expled 0x00ff00 #Green
expled 0x0000ff #Blue
sleep 5 #wait five seconds
expled 0xff0000 #Red
expled 0x00ff00 #Green
expled 0x0000ff #Blue
expled 0x000000 #Off
Скопируйте приведенный выше код в свой файл, затем сохраните и выйдите из файла. Далее в командной строке введите следующее:
chmod +x /root/rgb-led.sh
Приведенная выше команда изменит права на выполнение файла и позволит выполнить ваш скрипт: /root/rgb-led.sh.
Кроме того, сценарий можно запустить, введя sh /root/rgb-led.sh, обратите внимание, что он будет работать без изменения разрешений на выполнение файла. Тем не менее, иногда удобно иметь возможность запустить скрипт, просто набрав имя файла.
Файл /etc/rc.local - это сценарий, который будет автоматически выполняться системой после завершения загрузки.
Когда Omega загрузится, он будет читать команды из файла /etc/rc.local и выполнять их.
Наберите vi /etc/rc.local, и вы увидите содержимое файла:
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
exit 0
Здесь мы видим, что команды в этом файле будут выполняться после инициализации системы, и что единственная команда, которую он запускает, - это exit 0. Давайте изменим это и заменим цвета при загрузке.
Для этого отредактируйте файл /etc/rc.local так, чтобы он выглядел следующим образом:
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
sh /root/rgb-led.sh
exit 0
Мы добавили команду, которую хотим запустить:
sh /root/rgb-led.sh
Сохраните и выйдите, перезагрузите Omega, чтобы увидеть результаты!
Когда /etc/rc.local запускается при загрузке, вы не сможете увидеть какой-либо вывод из вашего файла. Вам понадобится просмотреть выходные данные, чтобы увидеть, где ваш код не работает.
Вы можете направить вывод вашей команды в конкретное место назначения с помощью простого добавления в файл /etc/rc.local.
Синтаксис для передачи вашей команды в файл выглядит следующим образом:
>> добавляет вывод вашей команды в выходной файл. 2>&1 - это индикатор для сценария оболочки о том, что вы хотите включить сообщения об ошибках в выходные данные вашей команды. По умолчанию передается только стандартный вывод.
Чтобы применить это к вашей команде при загрузке, просто отредактируйте файл /etc/rc.local следующим образом:
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
sh /root/rgb-led.sh >> /tmp/output.txt 2>&1
exit 0
Глядя на /tmp/output.txt, мы видим:
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: 000000
Duty: 100 100 100
> Set GPIO17: 1
> Set GPIO16: 1
> Set GPIO15: 1
и если мы запустим наш скрипт /root/rgb-led.sh в командной строке, мы должны увидеть тот же результат:
root@Omega-2757:/# sh /root/rgb-led.sh
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: 000000
Duty: 100 100 100
> Set GPIO17: 1
> Set GPIO16: 1
> Set GPIO15: 1
Вы можете вернуться в файл /etc/rc.local и закомментировать строку, в которой выполняется сценарий, чтобы не допустить мигания индикатора RGB Expansion Dock.
Если ваши команды не работают при загрузке, попробуйте скопировать их непосредственно из файла /etc/rc.local и запустить их вручную.
Если ваша команда выполняется непрерывно и никогда не достигает строки exit 0 в файле /etc/rc.local, значит, Omega не может успешно завершить последовательность загрузки. Чтобы избежать этого сценария, убедитесь, что вы разветвляете процесс, добавив амперсанд в конец команды:
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru