XMLRPC Client — управление внешними устройствами

GnuRadio — мощная вещь, и сейчас мы в этом убедимся еще раз. До этого момента мы взаимодейстововали только с между схемами созданными GnuRadio. Но настало время сделать что-то более интересное. В данной статье мы будем управлять светодиодом при помощи GnuRadio.
Нырнем поглубже.
Для начала задумаемся, что происходит когда мы нажимаем кнопку «Run»? GnuRadio в этот момент генерирует Python скрипт, и запускает его на исполнение. Для того чтобы запустить наш граф на другом компьютере, нам не требуется grc файл, а только сгенерированный Python скрипт. Но если наш граф всего лишь скрипт на Питоне, то давате взглянем на его внутренности.
Откроем код скрипта, сгенерированного для сервера из нашего старого примера.
Обратим внимание на секцию импорта

и строки кода чуть ниже

Погуглив немного по ключевому слову «SimpleXMLRPCServer» мы обнаруживаем что это, штатный модуль Питона. Хм… Но раз это штатный модуль, и он есть везде где установлен Питон, то можно написать скрипт который будет без всяких проблем взаимодействовать с клиентом созданым GnuRadio.
Чем бы нам поуправлять? Конечно же, классическая задача, поморгать светодиодиком!
Итак, нам потребуется устройство, к которому можно подключить светодиод, и которое способно выполнять скрипты на Питоне. Вы наверно уже догадались что речь идет о Raspberry Pi.
У меня завалялся RGB светодиод. Подключим его по следующей простой схеме.
sheme

Набросаем интерфейс управления
Добавим на граф три блока WX GUI Chooser, и настроим их как двухпозиционные кнопки. Подробно о настройке Chooser’а я рассказывал в предыдущей статье. Значения для каждого состояния кнопки будут «0» и «1», False и True соответственно.
ledcontrol1Добавляем блоки XMLRPC Client. Про них я тоже уже рассказывал ранее
Настраиваем  их как показано на рисунке.
ledcontrol2
В итоге мы должны получить следующий граф.
ledcontrol3

Теперь займемся написанием кода для Raspberry Pi.

Ну что, настало время проверки.
Запускаем наш скрипт на Raspberry Pi от рута
sudo ./rgb_gnurad.py

И запускаем наш граф в GnuRadio

Смотрим что получилось.

ledcontrol.grc
led_control.py
rgb_gnurad.py

Добавить комментарий

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">