GNU Radio创建qt time plot python OOT块

2024-06-01 21:04
文章标签 python qt 创建 radio time gnu plot oot

本文主要是介绍GNU Radio创建qt time plot python OOT块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、创建自定义的 OOT 块
    • 1、安装相应依赖
    • 2、创建 OOT 块
    • 3、修改相关
    • 4、编译及安装 OOT 块
  • 二、测试
    • 1、grc 图
    • 2、运行结果
  • 三、资源自取


前言

官方提供的绘制时域波形的 block 名字叫做 QT GUI Time Sink,其底层实现是用 C++ 写的,但是我发现如果要是对收到的信号做一些其他的显示,例如在实现雷达测距的时候将 x 轴改为距离轴,y 轴改为主副瓣比,那么直接对 QT GUI Time Sink 这个模块做一些修改还是比较难的,因此就想通过 python OOT 实现一个简单的绘制时域波形的 block,并且这个 block 方便后面做自定义修改,例如修改成显示距离或者速度等等。


一、创建自定义的 OOT 块

1、安装相应依赖

  • Matplotlib:一个数据可视化库,提供了一个类似于 MATLAB 的绘图框架。
  • NumPy:一个提供多维数组对象和一系列针对数组操作的函数的库,它是几乎所有进行科学计算的Python软件包的核心库。
sudo apt install python3-pip
pip install matplotlib numpy

2、创建 OOT 块

参考官方教程 Creating Python OOT with gr-modtool 创建自定义的 OOT块

①、在 gr-customModule 目录下添加一个名为 Zadoff-Chu 的新块:

gr_modtool add my_time_plot

将显示块的类型:

GNU Radio module name identified: myModule
('sink', 'source', 'sync', 'decimator', 'interpolator', 'general', 'tagged_stream', 'hier', 'noblock')

②、my_time_plot 模块需要根据输入数据同步显示,因此这里选择 sync

Enter block type: sync

③、使用 Python 代码实现

Language (python/cpp): python
Language: Python
Block/code identifier: my_time_plot

④、输入版权所有者的名称或组织:

Please specify the copyright holder: gnep

⑤、输入采样率作为参数

Enter valid argument list, including default arguments: 
samp_rate = 32000.0

⑥、选择是否需要 QA 代码:

Add Python QA code? [Y/n] n

⑦、然后将创建或修改以下文件:

Adding file 'python/my_time_plot.py'...
Adding file 'grc/customModule_my_time_plot.block.yml'...
Editing grc/CMakeLists.txt...

相关配置如下图:
在这里插入图片描述

3、修改相关

my_time_plot.py 部分核心程序:

    def work(self, input_items, output_items):in0 = input_items[0]n_samples = len(in0)t = np.arange(0, n_samples) / self.sampling_rate  # 生成时间向量# Send data to the queueself.q.put((t, in0))return len(in0)

customModule_zcSequence.block.yml 部分核心配置:

parameters:
- id: samp_ratelabel: samp ratedtype: float#  Make one 'inputs' list entry per input and one 'outputs' list entry per output.
#  Keys include:
#      * label (an identifier for the GUI)
#      * domain (optional - stream or message. Default is stream)
#      * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
#      * vlen (optional - data stream vector length. Default is 1)
#      * optional (optional - set to 1 for optional inputs. Default is 0)
inputs:
- label: indomain: streamdtype: float

详细代码及配置文件文末自取

4、编译及安装 OOT 块

1、该块需要编译和安装,确保目前位于 gr-customModule 目录中:

cd gr-customModule

2、如果 build/ 目录已存在,请将其删除:

rm -rf build/

3、创建 build/ 目录

mkdir build

4、进入 build 目录

cd build/ 

5、运行 cmake 来构建 makefile

cmake ..

6、编译模块

make

7、安装模块

sudo make install

8、更新 customModule 库的链接

sudo ldconfig 

二、测试

1、grc 图

这里用一个 10Hz 的信号源做测试,采样率设置大一些,设置成10 kHz
在这里插入图片描述

2、运行结果

官方 QT GUI Time Sink 显示内容:
在这里插入图片描述
自定义制作的 time plot 显示内容:
在这里插入图片描述

三、资源自取

链接:GNU Radio创建qt time plot python OOT块
在这里插入图片描述


我的qq:2442391036,欢迎交流!


这篇关于GNU Radio创建qt time plot python OOT块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022113

相关文章

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

Python中使用defaultdict和Counter的方法

《Python中使用defaultdict和Counter的方法》本文深入探讨了Python中的两个强大工具——defaultdict和Counter,并详细介绍了它们的工作原理、应用场景以及在实际编... 目录引言defaultdict的深入应用什么是defaultdictdefaultdict的工作原理

Python中@classmethod和@staticmethod的区别

《Python中@classmethod和@staticmethod的区别》本文主要介绍了Python中@classmethod和@staticmethod的区别,文中通过示例代码介绍的非常详细,对大... 目录1.@classmethod2.@staticmethod3.例子1.@classmethod

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da