首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式更改GNUradio流中的属性?

如何以编程方式更改GNUradio流中的属性?
EN

Stack Overflow用户
提问于 2017-07-08 06:20:00
回答 2查看 1.5K关注 0票数 0

我需要根据在我自己的代码中计算的数据,分别更改信源/信宿上的接收和发送增益。做这件事最好的方法是什么?没有一个教程描述了如何做到这一点。

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

EN

回答 2

Stack Overflow用户

发布于 2017-07-13 00:06:59

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

下面是一个示例嵌入式python块,其中包含一个用于增益双精度值的传入消息端口和一个必须连接到USRP Sink/Source的传出端口

代码语言:javascript
复制
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) })
票数 0
EN

Stack Overflow用户

发布于 2018-04-09 12:34:40

几个月前,我也有过类似的需求。我的实现包括制作自动生成的Python2.7文件的副本,然后编辑它以添加所需的功能。在我的例子中,我需要一种快速而简单的方法来生成多个通道,并在执行文件时设置变量。这是通过使用click模块实现的,该模块允许通过终端窗口设置变量和执行文件。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44980450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档