通过网络更新 GNU Radio 中的变量

update a variable in GNU Radio over the network

我正在使用 GNU Radio 通过 UDP 接收器流式传输 RF 数据。数据流式传输到控制程序。作为这个过程的一部分,我正在进行频移(使用乘法块)、过滤和下采样。

我想在运行时间更改频移值。

有没有办法将 UDP 源的值直接保存到变量中?我现在能想到的唯一解决方案是永远生成一个正弦波,然后将其通过管道传输到 GNU Radio,然后将我的信号与它相乘。但这似乎是一种巨大的资源浪费。我希望能够发送单个数据包,将该值 "latch" 放入 GNU Radio 变量中,然后在我的块中使用该变量。

有多种方法:

  1. 如果您想坚持 GNU Radio Companion "variable" 概念,您可以使用 XMLRPC 块。用法非常简单,GNU Radio GRC 示例(通常在 /usr/share/gnuradio/examples/grc 下找到)涵盖了这一点。
  2. 如果你想自己写一点代码,你可以写一个 python 层次块,它实际上只包含一个信号源,但也有一个消息端口,一个消息端口处理程序可以修改信号源的频率。这样,您也可以使用 ZeroMQ 块,它们非常棒 :)
  3. 假设地,您当然也可以实现 2. 中的层次块,但不是给它一个消息端口和一个消息处理程序,而是让它异步地对来自外部的网络消息做出反应,以更改设置信号源。这里需要注意的是 python 多线程有点棘手,您基本上需要重新实现 1 中的 XMLRPC 块。