0

我需要根据将在我自己的代码中计算的数据分别更改我的源/接收器上的接收和传输增益。做这个的最好方式是什么?没有任何教程描述了这是如何完成的。

理想情况下,GNUradio python 脚本只会在一个循环中调用几个函数,它们会返回增益值,系统会动态变化。

4

2 回答 2

0

几个月前,我对这个功能也有类似的需求。我的实现涉及复制自动生成的 Python 2.7 文件,然后对其进行编辑以添加所需的功能。就我而言,我需要一种快速简单的方法来生成多个通道并在执行文件时设置变量。这是通过使用click模块完成的,该模块允许设置变量并通过终端窗口执行文件。

如果您尝试在执行期间动态计算和更改变量,我的建议是使用线程模块(或等效模块)在main()函数中创建一个单独的线程。这个新线程应该调用一个单独的函数来循环你的代码。在这个函数中,你的算法应该使用GRC 自动生成的和函数。variablename_getvariablename_set

目前尚不清楚您用于计算这些增益变化的数据来自哪里,但希望这个答案会有所帮助。

于 2018-04-09T04:34:40.383 回答
0

UHD 接收器/源可以通过消息端口上的特定命令语法进行控制。有关详细信息,请参阅https://gnuradio.org/doc/doxygen/page_uhd.html#uhd_command_syntax

这是一个示例嵌入式 python 块,带有用于增益双倍值的传入消息端口和必须连接到 USRP 接收器/源的传出端口

from gnuradio import gr

class tuning_uhd(gr.sync_block):
    def __init__(self):
        gr.sync_block.__init__(self,
            name="Gain Tuning",
            in_sig=[],
            out_sig=[]
            )
        # Message ports
        self.message_port_register_out(gr.pmt.intern("uhd"))
        self.message_port_register_in(gr.pmt.intern("gain"))
        self.set_msg_handler(gr.pmt.intern('gain'), self.handle_msg)

    def handle_msg(self, msg):
        self.message_port_pub(gr.pmt.intern('uhd'), gr.pmt.to_pmt({'gain': gr.pmt.to_double(msg) })
于 2017-07-12T16:06:58.550 回答