【问题标题】:Gnuradio streaming between two computers?两台计算机之间的 Gnuradio 流式传输?
【发布时间】:2017-03-06 13:12:51
【问题描述】:

有没有一种简单的方法可以使用标准块集在运行 GNUradio 的两台计算机之间实现通信?

我现在是这样的:

在 Linux 计算机上,GNUradio 正在运行并接收来自 Radio 外围设备的输入。在该计算机上,我可以在 WX 示波器上看到接收到的波形。我还可以使用滑块和输入框来更改接收器频率等内容。

我想做的是:

在 Windows 计算机上,我有 WX 示波器和滑块。当我移动滑块或更改输入框时,该数据被发送到 Linux,它仍在 Gnuradio 上运行无线电接收器。接收到的信号通过流返回到窗口,并显示在 Windows 的 WX 示波器上。

其他地方有人建议使用 ZMQ 块,但是,当我尝试设置 PUSH/PULL 以将正弦波从 Linux 传输到 Windows 时,没有任何结果。推荐该方法的人尝试了相同的方法,但也无法使其正常工作,所以我认为该块可能被破坏了?

那么是否有任何替代块可以做我想做的事情?最好是一些有据可查的东西,并且可以在 GNUradio-companion 上找到。

【问题讨论】:

    标签: gnuradio-companion


    【解决方案1】:

    根据接收器的数据速率,尝试使用例如发送原始波形数据时可能会遇到性能问题。 UDP 块,发送者可能会打印类似于以下内容的错误:

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

    因为示波器小部件通常只显示输入数据的一部分,远程可视化波形的更理想方式可能是仅发送渲染的示波器小部件(例如,使用 VNC 或 X2Go 等远程桌面)。尽管此解决方案超出了您最初的问题,但从长远来看,它可能更容易用于涉及双向 GUI 交互的情况。

    【讨论】:

      【解决方案2】:

      对于范围小部件数据,UDP sinksource 块似乎是 GNU Radio 的原生块,它们要么是充分记录的解决方案,要么足够简单来解决这个问题,再次考虑到防火墙配置,正如 @Zephyr 所提到的。

      从 GRC,在 UDP 块中指定:

      1. 显示计算机的主机名或 IP 地址,以及

      2. 选择一个尚未使用的端口号(并且您使用的是 Linux、OS X 或任何类似 UNIX 的东西,而不是低于 1024 的任何端口)。

      要通过网络设置变量,您可以尝试 XMLRPC 块,如another answer 中所述。然而,这些是recently deprecated

      如果出现性能问题,请参阅我的其他答案以讨论替代方案。

      【讨论】:

        【解决方案3】:

        Linux 和 Windows 都应该有可能阻止连接的防火墙。

        您需要发布 gnuradio-companion 中显示的错误消息。

        【讨论】: