Python 我可以将变量挂接到自定义非处理块上吗?

Python 我可以将变量挂接到自定义非处理块上吗?,python,gnuradio,Python,Gnuradio,我正在为GRC实现一个自定义块,它通过串口向硬件发送命令。我需要它在每次变量(例如QT GUI范围)更改时发送命令。我对GNU电台很陌生,所以我不知道什么是最好的方法。我是否需要从GNU radio的某个块类(例如同步块)派生类,还是应该使用自定义类创建自定义块并以其他方式将其连接到系统中?如何设置它,使更改的变量调用我的块的串行发送函数 MESSAGE_STR='SET' 类串行块: 定义初始自我: self.ser=检测设备 def send_varself,var: 如果self.ser为

我正在为GRC实现一个自定义块,它通过串口向硬件发送命令。我需要它在每次变量(例如QT GUI范围)更改时发送命令。我对GNU电台很陌生,所以我不知道什么是最好的方法。我是否需要从GNU radio的某个块类(例如同步块)派生类,还是应该使用自定义类创建自定义块并以其他方式将其连接到系统中?如何设置它,使更改的变量调用我的块的串行发送函数

MESSAGE_STR='SET' 类串行块: 定义初始自我: self.ser=检测设备 def send_varself,var: 如果self.ser为无: raise RUNTIMERROR未找到设备 bytes_to_write=bytearrayf{MESSAGE_STR}{intvar},'utf8' self.ser.writebytes\u to\u write
这是一节课。如果我想更改滑块以使用新值调用send_var,那么最好的做法是什么?

当您在or文件中为GRC定义块结构时,您可以指定回调,这些回调是应该插入GRC生成的代码中的代码,只要依赖于GRC用户创建的变量的块参数发生更改(通常调用setter方法),就会调用这些代码。您只需要编写这样一个回调

我个人还没有为GR 3.8编写过这样的文件,但通过分析示例,您的.block.yml应该类似于:

templates:
    [...other things in the templates section...]
    callbacks:
    - send_var(${var})
在3.7中,它将是XML

<callback>send_var($var)</callback>

我编写了var来匹配代码,但实际上它是块参数的名称,而不是变量的名称。块定义不知道也不需要知道参数是常量、变量还是包含变量的表达式。

谢谢!你知道这是在哪里记录的吗?我错过了吗,或者我可以为GNU电台提供一些文档吗?我仍然在Ubuntu上使用3.7,所以XML是完美的。不过,我相信将来有同样问题的人会很感激你添加.yml格式。@LouisCloete我已经添加了指向我找到的wiki页面的链接。我还搜索了GR的源代码,查找标准块的文件示例。不幸的是,我没有找到任何关于GRC操作原则的参考文件。