【发布时间】:2022-01-24 18:44:57
【问题描述】:
我在 GNU Radio 伴侣 3.8.1.0 上编写了一个程序,当我选择 Python 语言时它运行良好。
但是,当我选择 C++ 输出语言时,我得到了错误
此块不支持 C++ 输出
用于块 WBFM Receive、osmocom 源和有理重采样器。
你能告诉我如何解决这个问题吗?
【问题讨论】:
标签: gnuradio gnuradio-companion
我在 GNU Radio 伴侣 3.8.1.0 上编写了一个程序,当我选择 Python 语言时它运行良好。
但是,当我选择 C++ 输出语言时,我得到了错误
此块不支持 C++ 输出
用于块 WBFM Receive、osmocom 源和有理重采样器。
你能告诉我如何解决这个问题吗?
【问题讨论】:
标签: gnuradio gnuradio-companion
正如错误消息所说,这些块不支持 C++ 输出。
GRC 的工作是将流程图的图形表示转换为程序 - 在(默认)Python 中,这是实例化所有块、设置流程图、连接所有块并告诉 GNU Radio 的 Python 代码运行流程图。
在C++模式下,生成的代码是C++。
为了使任何一个工作,这些块的开发人员需要编写模板,以便将需要插入到结果程序中的内容。
对于 GNU Radio 带来的许多树内块,Python 和 C++ 都发生了这种情况。然而,对于WBFM receive,这不可能发生——块本身就是一个 Python 分层块!用 C++ 封装是不可能的(大多数块都是用 C++ 编写并为 Python 封装的。很难绕过)。
对于 Rational Resampler 也是如此,这是一个 Python hier 块,可根据需要计算重采样器的过滤器抽头。如果我没记错的话,还有 osmocom 块。
因此,由于所有这些都是用 Python 编写的,所以无论如何,如果没有 Python,您将无法使用它们。
请注意,从 C++ 与 Python 构建流程图的性能优势为零:从 Python 端所做的所有事情就是告诉 GNU Radio 要创建、连接和运行什么。所有的信号处理都是在 C++ 代码中完成的(除非你写了一个 Python 块,但是你很少会在任何信号处理代码中找到这些)。
【讨论】: