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

设计一个gr模块 GNU Radio——Creating Python OOT with gr-modtool的更多相关文章
- 「造个轮子」——cicada 设计一个配置模块
前言 在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口.路由的配置. 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议. 最终其实还是按照我之前的想法来做了 ...
- [SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio
目录 1.GNU Radio 是什么 2.我为什么要用 GNU Radio 3.数字信号处理 3.1 一点信号理论 3.2 将数字信号处理应用于无线电传输 4.基于流程图的模块化数字信号处理方法 本文 ...
- 【译】GNU Radio How to write a block 【如何开发用户模块及编写功能块】
本文讲解如何在GNU Radio中添加用户开发的信号处理模块,译文如有不当之处可参考原文地址:http://gnuradio.microembedded.com/outoftreemodules Ou ...
- python小练习,打出1-100之间的所有偶数,设计一个函数,在桌面上创建10个文件,并以数字命名,复利计算函数
练习一:打出1-100之间的所有偶数 def even_print(): for i in range(1,101): if i % 2 == 0: print (i) even_print() #列 ...
- 用Python设计一个经典小游戏
这是关于Python的第9篇文章,介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习 ...
- python学习:设计一个算法将缺失的数字找出来。
算法题 已知整型数值 a[99], 包含的所有99个元素都是从1-100中随机取值,并且这99个数两两互不相等,也就是说从1到100这100个数字有99个在数值内,有一个缺失.请设计一个算法将缺失 ...
- 云课堂Android模块化实战--如何设计一个通用性的模块
本文来自 网易云社区 . 如何设计一个通用性的模块 前言 每个开发者都会知道,随着项目的开发,会发现业务在不断壮大,产品线越来越丰富,而留给开发的时间却一直有限,在有限的时间,尽快完成某个功能的迭代. ...
- 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...
- Python 工匠:一个关于模块的小故事
前言 模块(Module)是我们用来组织 Python 代码的基本单位.很多功能强大的复杂站点,都由成百上千个独立模块共同组成. 虽然模块有着不可替代的用处,但它有时也会给我们带来麻烦.比如,当你接手 ...
- python 控制语句基础---->代码块:以为冒号作为开始,用缩进来划分作用域,代表一个整体,是一个代码块,一个文件(模块)也称为一个代码块 | 作用域:作用的范围
# ### 代码块:以为冒号作为开始,用缩进来划分作用域,代表一个整体,是一个代码块,一个文件(模块)也称为一个代码块 # ### 作用域:作用的范围 print(11) print(12) prin ...
随机推荐
- RabbitMQ消息的生存时间TTL(Time To Live)
目录 RabbitMQ消息的生存时间TTL MQ环境测试准备 代码实现 生产者 8080 测试 死信队列 自定义ttl消息 过期丢弃消息 总结 RabbitMQ消息的生存时间TTL TTL(Time ...
- 【工具】Vscode翻译插件推荐(不用谷歌翻译api、支持短句英汉互译、支持查词、支持自动补全、不需要浏览器)
2024/04/24说明:这篇暂时修改为粉丝可见,因为正在冲粉丝量,等到我弄完了粉丝量的要求,我就改回来!不方便看到全文的小伙伴不好意思!! 需求: 1)偶尔需要查英文生词: 2)有时候想不起来中文对 ...
- 分页工具之【PageHelper】
1.PageHelper技术 依赖 <!-- PageHelper --> <dependency> <groupId>com.github.pagehelper& ...
- Vue3 组件通信方式小结
也是零零散散用 vue3 来搞一些前端的页面, 每次在组件通信, 主要是传数据这块总是忘记, 大多无非父传子, 子传父等情况, 这里再来做一个小结. 父传子 Props 最常见的就是父组件给子组件传递 ...
- Markdown 使用十分钟入门
Markdown 十分钟入门 标题 标题前#+空格 支持6级标题 输入样式#+空格:##+空格:以此类推, *注意标题输入的#前面不能有空格 字体 斜体 # 这里不要空格 _斜体_ *加一个* 字体加 ...
- Seata源码—4.全局事务拦截与开启事务处理
大纲 1.Seata Server的启动入口的源码 2.Seata Server的网络服务器启动的源码 3.全局事务拦截器的核心变量 4.全局事务拦截器的初始化源码 5.全局事务拦截器的AOP切面拦截 ...
- L2-1、打造稳定可控的 AI 输出 —— Prompt 模板与格式控制
一.为什么需要 Prompt 模板? 在与 AI 模型交互时,我们经常会遇到输出不稳定.格式混乱的问题.Prompt 模板帮助我们解决这些问题,通过结构化的输入指令来获得可预测且一致的输出结果. 模板 ...
- 记一道有趣的交互题 noi.ac #2035歪比巴卜
记一道有趣的交互题 noi.ac #2035歪比巴卜 Problem Alice手上有两个\(\le n\)且不同的正整数\(x,y\),Bob手上有一个正整数\(z\),已经确认是\(x\)或\(y ...
- 【语义分割专栏】3:Segnet原理篇
目录 前言 背景介绍 Segnet核心剖析 池化索引(pooling Indices) 其他细节 编码器解码器的对称结构 Segnet模型代码 结语 参考资料 前言 本篇文章收录于语义分割专栏,如果对 ...
- 一文详解如何在 ChengYing 中通过产品线部署一键提升效率
在之前的内容当中,我们为大家介绍过 ChengYing的安装原理.产品包制作等内容,本篇就延续之前的内容,和大家展开聊聊 ChengYing 产品线部署相关的设计.帮助对「一站式全自动化全生命周期大数 ...