我想用 c++ 为 GNU Radio 编写一个 OOT 模块。
为了熟悉此事,我想自己编写现有的 Block 'add_xx'。
我不知道如何在 IO-Type 的块设置中出现一个下拉菜单。
谁能举一个简单的例子,我必须如何将它写在 _impl.cc 和 _impl.h 文件中?
我有使用 gr_modtool 创建的代码框架。如果样本基于此,那就太好了。
我想用 c++ 为 GNU Radio 编写一个 OOT 模块。
为了熟悉此事,我想自己编写现有的 Block 'add_xx'。
我不知道如何在 IO-Type 的块设置中出现一个下拉菜单。
谁能举一个简单的例子,我必须如何将它写在 _impl.cc 和 _impl.h 文件中?
我有使用 gr_modtool 创建的代码框架。如果样本基于此,那就太好了。
所以,诀窍在于不同类型的add_XX
块实际上是不同的类,而下拉菜单实际上使 GNU Radio 伴侣设置了一些变量,这些变量又用于决定使用哪个块;这是描述 add_xx的 XML 文件中所有相对难看的代码:
<?xml version="1.0"?>
...
<block>
<name>Add</name>
<key>blocks_add_xx</key>
<import>from gnuradio import blocks</import>
<make>blocks.add_v$(type.fcn)($vlen)</make>
<param>
<name>IO Type</name>
<key>type</key>
<type>enum</type>
<option>
<name>Complex</name>
<key>complex</key>
<opt>fcn:cc</opt>
</option>
<option>
<name>Float</name>
<key>float</key>
<opt>fcn:ff</opt>
</option>
...
</param>
<param>
<name>Num Inputs</name>
<key>num_inputs</key>
<value>2</value>
<type>int</type>
</param>
<param>
<name>Vec Length</name>
<key>vlen</key>
<value>1</value>
<type>int</type>
</param>
<check>$num_inputs > 1</check>
<check>$vlen > 0</check>
<sink>
<name>in</name>
<type>$type</type>
<vlen>$vlen</vlen>
<nports>$num_inputs</nports>
</sink>
<source>
<name>out</name>
<type>$type</type>
<vlen>$vlen</vlen>
</source>
</block>
所以,有一个add_cc
用于复杂的类,一个add_ff
用于浮动的类等等。事实上,GNU Radio 的构建系统从单个文本模板生成这些实现。
因此,虽然我确实认为重新创建一个简单的块add_cc
(如
所以:从单一类型开始,然后按照官方 GNU Radio Guided Tutorials从 1 到 5 进行操作。它们是专门为像你这样的人制作的,并且涵盖了 C++ 块!