设计一个gr模块 GNU Radio——Creating Python OOT with gr-modtool
官方例程
Creating Python OOT with gr-modtool
1.创建OOT模组
- 返回根目录
cd $HOME
- 创建名为customModule的out-of-tree (OOT)模组
gr_modtool newmod customModule
- 到gr-customModule目录下
cd gr-customModule
- 列出OOT模块中的所有文件和目录
ls
2.创建OOT块
- 创建名为addSubSelect的块(block)
该命令将启动一个关于如何定义块的问题:块类型、语言和参数
gr_modtool add addSubSelect
按照提示依次输入想要的块类型,语言
其中‘sync’代表块类型,‘python’代表块语言,‘wyn’是标识符(Yourname),‘n’代表确定不需要Python质量保证(QA)代码。
之后生成.py .yml .txt三个文件
3.修改Python.py文件
3.1 找到addSubSelect.py文件
gedit python/addSubSelect.py
修改如下三处
import numpy as np
初始化函数,新增参数selector和一个输入
def __init__(self, selector=True):
gr.sync_block.__init__(self,
name="addSubSelect",
in_sig=[np.complex64,np.complex64],
out_sig=[np.complex64])
self.selector = selector
工作函数 真 + 假 —
def work(self, input_items, output_items):
in0 = input_items[0]
in1 = input_items[1]
if (self.selector):
output_items[0][:] = in0 + in1
else:
output_items[0][:] = in0 - in1
return len(output_items[0])
3.2 找到修改customModule_addSubSelect.block.yml
gedit grc/customModule_addSubSelect.block.yml &
修改
parameters:
- id: selector
label: Add (True) or Subtract (False) Selector
dtype: bool
default: True
inputs:
- label: in0
domain: stream
dtype: complex
- label: in1
domain: stream
dtype: complex
outputs:
- label: out0
domain: stream
dtype: complex
4.编译安装模块(block)
在gr_customModule的顶层目录中,创建一个build目录:
mkdir build
之后进入build
cd build
运行CMake,它将准备makefile:
cmake ..
编译模块
make
安装
sudo make install
最后,运行ldconfig更新customModule库的链接:
sudo ldconfig
打开GNU Radio Companion (GRC):
gnuradio-companion &
可以看到addSubSelect,successful