Потоковая передача Gnuradio между двумя компьютерами?

Есть ли простой способ реализовать связь между двумя компьютерами, работающими под управлением GNUradio, используя стандартный набор блоков?

То, что у меня есть сейчас, это:

На компьютере с Linux работает GNUradio и принимает входные данные от периферийного радиоустройства. На этом компьютере я вижу полученную форму волны на осциллографе WX. Я также могу использовать ползунки и поля ввода для изменения таких вещей, как частота приемника.

Что я хотел бы сделать, так это:

На компьютере с Windows у меня есть прицел WX и ползунки. Когда я перемещаю ползунок или изменяю поле ввода, эти данные отправляются в Linux, который все еще запускает радиоприемник на Gnuradio. Полученный сигнал проходит через поток обратно в окна и отображается в области WX в Windows.

Кто-то в другом месте предложил использовать блоки ZMQ, однако, когда я попытался настроить PUSH/PULL для передачи синусоидальной волны из Linux в Windows, ничего не получилось. Парень, который рекомендовал этот подход, попробовал то же самое и тоже не смог заставить его работать, поэтому я думаю, что этот блок может быть нарушен?

Итак, есть ли альтернативные блоки, которые могут делать то, что я пытаюсь сделать? Желательно что-нибудь хорошо задокументированное и доступное на GNUradio-companion.


person Zephyr    schedule 22.07.2016    source источник


Ответы (3)


В зависимости от скорости передачи данных от приемника можно столкнуться с проблемами производительности при попытке отправить необработанные данные сигнала, например, с помощью блоки UDP, где отправитель может напечатать ошибку, подобную следующей:

gr::log :WARN: udp_source0 - Too much data; dropping packet.

Поскольку виджеты осциллографа обычно отображают только часть входных данных, более идеальным способом удаленной визуализации формы сигнала может быть отправка только визуализированного виджета осциллографа (например, с помощью удаленного рабочего стола, такого как VNC или X2Go). Хотя это решение выходит за рамки вашей первоначальной проблемы, его, вероятно, проще использовать в долгосрочной перспективе для случаев, связанных с двусторонним взаимодействием с графическим интерфейсом.

person chrstphrchvz    schedule 01.08.2016

Для данных виджета области действия: приемник UDP и source кажутся родными для GNU Radio и являются либо достаточно документированным решением, либо достаточно простым для этой проблемы, опять же с использованием брандмауэра. конфигурация во внимание, как упоминал @Zephyr.

Из GRC укажите в блоках UDP:

  1. имя хоста или IP-адрес дисплей-компьютера, и

  2. выберите номер порта, который еще не используется (и использовали ли вы Linux, OS X или что-то подобное UNIX, а не любой порт ниже 1024).

Для установки переменных по сети вы можете попробовать блоки XMLRPC, как описано в другом ответе. Однако они были недавно объявлены устаревшими.

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

person chrstphrchvz    schedule 01.08.2016

И Linux, и Windows должны иметь брандмауэры, которые могут блокировать соединения.

Вам необходимо опубликовать сообщения об ошибках, отображаемые в gnuradio-companion.

person Cinaed Simson    schedule 28.07.2016