设计一个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

posted @   snowyn  阅读(372)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示