【问题标题】:update a variable in GNU Radio over the network通过网络更新 GNU Radio 中的变量
【发布时间】:2016-01-10 11:16:36
【问题描述】:
我正在使用 GNU Radio 通过 UDP 接收器将射频数据流式传输出去。数据被流式传输到控制程序。作为此过程的一部分,我将进行频移(使用乘法块)、滤波和下采样。
我想在运行时更改频移值。
有没有办法让我将来自 UDP 源的值直接保存到变量中?我现在能想到的唯一解决方案是永远生成一个正弦波,然后将其通过管道传输到 GNU Radio,然后将我的信号乘以它。但这似乎是对资源的巨大浪费。我希望能够发送一个数据包,将该值“锁定”到 GNU Radio 变量中,然后在我的块中使用该变量。
【问题讨论】:
标签:
sockets
network-programming
udp
gnuradio
gnuradio-companion
【解决方案1】:
有多种方法:
- 如果您想坚持使用 GNU Radio Companion“变量”概念,您可以使用 XMLRPC 块。用法非常简单,GNU Radio GRC 示例(通常位于 /usr/share/gnuradio/examples/grc 下)涵盖了这一点。
- 如果你想自己写一点代码,你可以写一个 python hier 块,它实际上只包含一个信号源,但也有一个消息端口,带有一个消息端口处理程序,可以修改信号源的频率。这样,您也可以使用 ZeroMQ 块,非常棒:)
- 假设,您当然也可以从 2. 实现 hier 块,但不是给它一个消息端口和一个消息处理程序,而是让它异步响应来自外部的网络消息,以更改信号的设置资源。这里需要注意的是,python 多线程有点棘手,你基本上是从 1 开始重新实现 XMLRPC 块。