我的第一个GNURadio应用程序…

【GNURadio实验报告】实验1-配置Ubuntu22.04+GNURadio开发调试环境 记录Ubuntu22.04+GNU Radio3.10开发环境的配置过程 阅读详情
好东西,

目录:

前言

一.准备学习

二.针对性逐行研究代码

三.构建自己的应用流图,编写程序,调试通过

四、small tips

 

 

前言:学习背景:电子通信专业,相关专业课程都有学习,没学过python(大多数都没有学过)C++学习过,只学过C的话最好对面向对象编程的类,封装,重构有所了解,学习,有助于学习python编程。

 

一、            准备学习

步骤:入门中文文档——> 登陆gnuradio/wiki网站查看入门英文相关手册——>根据wiki在电脑上手动安装GNURadio平台(首先在电脑上安装虚拟机,虚拟机上安装LINUX系统)——>了解linux系统的基本操作指令,会运行安装好后的gnuradio源代码。

1.入门中文文档:

重点:[1]GNU_Radio入门_V0.99,黄琳著。

[2] Python简明教程

其他:对软件无线电基本概念,发展历史,随便找本书,有所了解。

2. http://gnuradio.org/redmine/projects/gnuradio/wiki,关于gnuradio的介绍这个网站是最全面的,入门时可以看看安装步骤介绍和FAQ。

3.安装最好参见上面网站的说明,因为其版本更新是最迅速的,中文文档版本过时,不便参考。

4.推荐论坛:http://www.ruby-forum.com/forum/gnuradio这个英文论坛确实有很多东西可以看,学会用搜索;http://gnuradio.cc/index.php?m-bbs.html 这个中文论坛比较冷清,但是有牛人解答,尤其是meteor,很热心,很牛,几乎有问必答。

5.有问题时针对性在论坛和网站FAQ上都搜索不到时,可以直接google(英文学术搜索比百度好),或者直接联系牛人。(加群,邮件联系)

二、针对性逐行研究代码

    根据课题要求,在下载的gnuradio包中查看相应源代码,找到主程序。

这里以我的OFDM举例,相关程序涉及一个只有数据发送的benchmark代码,一个ofdm收发的benchmark ofdm。

●理解程序第一步:重点理解python程序的流图机制,顶层文件都是python程序,底层C++写的信号处理模块可暂时不了解,可通过在GRC里查找相应模块了解其接口参数即可。先从简单程序入手,GNURadio入门文档的第四章在这一阶段要重新重点看。

  另外,由于python编程的重要性,个人认为简明教程还是不太够,最好再看一本厚一点的编程入门。推荐清华大学出版的james payne的python编程入门经典,其他也行。

●Benchmark代码详细解析有gnuradio中文论坛版大meteor的解释非常详细,对读懂这个程序有很大帮助。因为gnuradio就是为了实现各种无线电应用,也就是一个收发通信系统,所以在阅读其他程序之前也非常有必要先把这个物理层的收发程序读懂。

●其他程序的阅读我认为大框架就是要搞懂流图的建立,一个大的应用一般自己编写了几个python文件,流图流向涉及好几个自己编写的文件,一个办法就是在该主程序顶头用from…import引入模块的句子中找到从当前路径引入的模块,再在当前路径中找到对应.py文件,联系起来即可知道流图去向。其他引入模块若为from gnuradio import…则为从gnuradio中引入的模块,直接import则为调用的python的内嵌模块。

▲TIPS:

◆查找gnuradio的模块:为了读懂程序,不需要在阅读到前几句引入模块的时候就赶紧到gnuradio包中去搜索对应模块,而是读到具体语句的时候,确定是引用了gnuradio中模块的相关函数的时候再去查找其作用,一般格式举例: gr.sizeof_gr_complex 规律:所有gnuradio的模块调用前缀都是gr.后面有横杠表示类的私有函数。

查找方法:在gnuradio包下,例如gnuradio- 3.5.0文件夹下,选择“搜索”,注意键入关键字搜索方法:例如gr.sizeof_gr_complex就可以键入sizeof而不是全部键入,可断句键入搜索,一般我们要找的是CC文件和H文件,其他文件不用看。

◆查找python函数:程序中没有任何前后声明的一般为python的内嵌函数,举例: data = source_file.read(pkt_size - 2),这里source_file为前面定义的一个文件变量,python把其当做对象,read()函数没有任何说明,即可分析其为python内嵌函数。查找方法:安装一个python编辑调试器IDLE非常有必要!!!安装IDLE以后会有一个强大的帮助文档,类同matlab的帮助文档,可以直接在安装目录里打开,也可以打开编辑器以后按F1调出文档,要学会用其搜索功能,所有python函数都可以搜索到,对理解程序非常有帮助,另外,也可以尝试用编辑器编写一些小的python程序,帮助理解其编程原理。在GNURadio平台上构建自己的无线应用,初期阶段其已有C++编写的信号处理模块绝对已经足够,所以python编程就非常重要。也不需要单纯对python了解太深,脱离了gnuradio个人认为得不偿失。

三、构建自己的流图,编写程序,调试通过

●GRC的运用:初期学习构建简单通信系统可以尝试用grc,构建成功后仔细分析其生成的.py文件,对python程序的流图机制理解很有帮助。这一步甚至可以放在逐行阅读程序(第二步)之前。GRC的使用非常简单,不用细说,就是拖动模块过来连线,刚开始用的时候不知道怎么连线,有人告诉就是把两个端点各单击一次即可,若有问题则主要是原理的问题,对于模块接口参数的设计理解了原理根据提示修改一般没有问题,不过还是建议自己的程序不要用GRC,自己编写会好得多,参考模版也建议不要参考GRC生成的程序,参考源代码为好。

●在心中构建了一个流图以后,一个当然是可以用GRC仿真检验后再自己编程,如果GRC不能完成,则可以自己编程实现了。由于python是脚本语言,不需编译,所以目前作为仍然是新手级别,我只知道在终端直接运行,根据错误提示调试,新手遇到的问题多于缩进有关:indentation error:unexpected indent

或者变量定义位置:attribute error:”str” object has no attribute “read”(属性错误),这个错误在于我把变量写在了一个if语句下面,后面else又用了,总之都是基础错误,python语言对于变量不需要事先声明,所以对于新手理解程序有点障碍,必须慢慢习惯。再有莫名其妙的问题在各个论坛问了也没人理的时候就有可能是你的流图接口有问题了,这个必须就要自己慢慢的把自己用到的各个模块的接口搞懂然后再更改就行了。这个时候也可以求助于GRC看能不能解决。

四、small tips

1、USRP采样率(sample rate)问题:

USRP N系列时钟为100MSPS(samples per second):可调范围为masterclock/4----masterclock/512范围,通过调节比特率(bitrate)和每符号样值率(samples per symbol),公式如下:

采样率=符号速率(symbol rate)*每符号样值数=时钟频率(masterclock)/2的n次幂(n属于2-9)

符号速率=比特率/每符号样值数

2.python中的数值类型和长度:重点:complex型。查找文档费了点时间,这里直接贴出吧,复数complex是按照(实部,虚部)存储的,实部,虚部都是按浮点型float存储的,python没有double型,与matlab接口时要注意,由于文档中说数据类型的长度与版本和机器都有关,所以建议在python编辑器IDLE上编写一个小程序测试一下,一般float是4个字节,所以complex就是8个字节。

Gnuradio编程就是python编程,所以其数据类型是相通的。

这里注意★python操作的数据对象(据我看的程序貌似都是)string,所以其函数一般都把得到的数据转成了string型,这里不用紧张,收发是匹配的,会有还原。典型函数如:chr();ord();

 

GNU Radio教程 8.消息传递 消息传递 阅读详情

相关推荐

艰辛的Gnuradio搭建之路——Ubuntu安装配置gnuradio

整理了一下Ubuntu18.04下的以及我遇到的几个常见和罕见的bug。 1.Gnuradio 安装 首先推荐一些依赖。 sudo apt-get -y install git swig cmake doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit

RadiumTang的博客 9880

GNU Radio 社区

欢迎来到 GNU Radio 社区 目录 1 序言 2 内容 2.1 着手 2.2 文档 2.3 社区及交流 2.4 使用 GNU Radio 2.5 开发 GNU Radio 2.6 关联硬件 2.7 更多资讯及第三方延伸 3 新闻 序言 GNU Radio 是免费开源的软件开发工具套件。它提供信号运行

yuyin86的专栏 1667

在Ubuntu上面安装支持LimeSDR的GNURadio

在ubuntu上安装能支持lime的gnuradio,下面有介绍软件结构以及安装顺序。此文档完全参考官方文档。

kambit的博客 2万+

一起玩转GNU Radio:gr-digital

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

无线通信实验室 1万+

gr-osmosdr支持GNURadio的扩展

此文帮助大家更好分清gr-osmosdr里面各种block对的SDR板子和怎么去enable相应的blocks.

kambit的博客 7414

使用Pybombs安装GNURadio

GNURadio安装 之前安装过几次,最近安装时又出现问题。果断记录安装过程,回馈社会! 一、工具 Ubuntu desktop 14.04(建议使用双系统) 官方安装也用过16.04,不过为了稳定性最好使用14.04 在这提供官方的测试live系统,只能装载在U盘使用,无法安装。 https://wiki.gnuradio.org/index.php/GNU_Radio_Li...

Patience 5293

【GNURadio实验报告】实验3-关于GNU Radio和HackRF的采样率问题

使用HackRF发射信号时,采样率应控制在[200kHz,18MHz]之间,否则将导致信号失真。

WebTrapの笔记 4325

Ubuntu20.4安装gnuradio艰辛之路

Ubuntu20.4安装gnuradio的零基础艰辛之路

qq_44693140的博客 4454

我的第一个GNURadio应用程序心得

我的第一个GNURadio应用程序心得  (2012-07-10 17:08:33) 转载▼ 标签:  gnu   radio   杂谈 分类: 技术档 目录: 前言 一.准备学习 二.针对性逐行研究代码 三.构建自己的应用流图,编写程序,调试通过 四、small tips

sophiaviayang的博客 1625

基于GNURadio的USRP开发——GPS信号源设计

前提:Ubuntu系统安装、UHD驱动配置、GNURadio安装、虚拟机桥接模式及IP网络配置。

sss12345566的博客 3090

halcon与c#联合编程实现相机控制+图像平移缩放+日志记录+缺陷检测+路径规划

halcon与c#联合编程实现相机控制+图像平移缩放+日志记录+缺陷检测+路径规划 前言 本人近期在工作中遇到需要对某场景下利用海康相机进行图像缺陷检测与对应路径规划。通过对海康相机示例代码进行吸收与借鉴,最终实现了对海康相机的控制,并增加HSmartWindowControl控件,实现图像的实时显示与平移缩放功能;通过listview+toolstrip实现日志显示与类型(提示、警告、错误)分类;同时自行编制算法实现对缺陷的识别以及缺陷外扩矩形范围内的路径规划。 1.日志记录 代码如下(示例):

weixin_37864926的博客 2717

第一个GNURadio应用程序心得

原文地址:我的第一个GNURadio应用程序心得 目录:前言一.准备学习二.针对性逐行研究代码三.构建自己的应用流图,编写程序,调试通过四、small tips前言:学习背景:电子通信专业,相关专业课程都有学习,没学过Python(大多数都没有学过)C++学习过,只学过C的话最好对面向对象编程的类,封装,重构有所了解,学习,有助于学习python编程。一、 准备学习步骤:入门中

怒河春醒 3407

半导体EAP系统入门指南:从零开始理解设备自动化程序(附实战案例)

本文深入浅出地介绍了半导体制造中EAP(设备自动化程序)系统的核心作用与工作原理。EAP作为连接MES与生产设备的桥梁,负责指令翻译、数据采集与实时控制,是实现晶圆厂全自动化的关键。文章通过对比手动与自动模式,阐述了EAP在提升效率、保障良率方面的价值,并提供了一个实战案例,帮助读者从零构建对半导体CIM体系中这一关键组件的理解。

weixin_29200741的博客 736

【转载】第一个GNURadio应用程序心得

原文地址:我的第一个GNURadio应用程序心得作者:YEYE 目录: 前言 一.准备学习 二.针对性逐行研究代码 三.构建自己的应用流图,编写程序,调试通过 四、small tips     前言:学习背景:电子通信专业,相关专业课程都有学习,没学过python(大多数都没有学过)C++学习过,只学过C的话最好对面向对象编程的类,封装,重构有所了解,学习,有助于学习python

MY BLOG 4806

Nvidia Isaac Sim图形界面 入门教程 2024(3)

在使用Isaac Sim时,最先接触到的应该是它的图形界面,此处将简单介绍图形界面中常用的一些组件:Isaac Sim的界面的常用内容可以分为几个板块。

m0_56661101的博客 4547

CoppeliaSim(原V-REP)新手上路

CoppeliaSim(原V-REP)是一个机器人仿真平台,里面有很多来自别的公司的机器人模型以及完备的物理引擎,我们可以通过python,c++,matlab等语言控制里面的机器人。,您也可以在官网中Downloads里找您需要的版本,一般只需要下载EDU版本就可以了,我下载的是v4.1.0 windows EDU版本。在版本V4之前,CoppeliaSim叫V-REP,在官网可以下载到之前的V-REP版本。

qq_37051669的博客 4万+

Windows下安装gnuradio与USRP

这里写自定义目录标题安装 gnuradioUHD安装USB驱动安装boost安装测试 要用到gnuradio与usrp,记录一下自己的安装配置过程。 安装 gnuradio Windows下的GNURADIO安装,在网上查资料有一些windows下安装的,在安装过程中会出现另外的问题,磨了几天,成功搞定,所以写一篇文章来记录一下 下载exe安装即可(网盘文件中有3.8与3.9版本),链接: http://www.gcndevelopment.com/gnuradio/index.htm. 可从源码安装(链

Slqianli的博客 1万+

408 | 408常用计算公式与方法 —— 计组篇 汇总

408常用计算公式与方法 —— 计算机组成原理篇 汇总

"You are worthy! You can do it!" 4655

【基于官网教程的GNURADIO源码安装指导】

基于官方教程的gnuradio源码安装指导

weixin_45007877的博客 7021

深度学习实战107-基于Qwen3+GraphRAG+Agent的智能文档管理系统:精准问答与决策支持

在当今信息爆炸的时代,企业面临海量文档的管理与利用挑战。传统文档管理系统虽然提供了存储和检索功能,但缺乏对文档内容的深度理解与分析能力,更难以实现基于知识的决策支持。基于多模态大模型Qwen3、GraphRAG技术与Agent框架构建的智能文档管理系统,能够突破传统限制,实现文档内容的精准解析、知识图谱的自动构建、复杂关系的推理分析以及决策建议的生成,为企业知识管理带来革命性变革。

微学AI的博客 866

国科大作业考试资料《人工智能原理与算法》2024新编-第二次作业整理

1、对于下列活动,分别给出任务环境的PEAS描述, 并按2.3.2节列出的性质进行分析: 3、为图2.2中描述的吸尘器世界实现一个可以进行性能度量的环境模拟器。你的实现是必须是模块化的,以使传感器、执行器和环境特征(大小、形状、灰尘放置等)便于修改。 4、实现上述题目真空吸尘器环境中的简单反射Agent。用所有可能的初始灰尘分布和Agent位置,运行环境模拟器和Agent。记录Agent在每种情况下的性能评分和总体平均评分。

MatsumotoChrikk 1187

解决ModuleNotFoundError: No module named ‘gnuradio‘

python自行安装好 一、安装GNURadio sudo apt-get update sudo apt-get install gnuradio 二、安装gr-mapper和gr-mediatools gr-mapper gr-mediatools sudo apt-get install cmake

QAQIknow的博客 1万+

MuJoCo 入门教程(一)

在 MuJoCo 仿真中输入自定义数字有三种方法。首先,可在 XML 中定义全局数字字段。它们有一个名称和一个实数值数组。其次,可以通过特定元素的自定义数组来扩展某些模型元素的定义。具体方法是在 XML 元素大小中设置 nuser_XXX 属性。第三,数组 mjData.userdata 不用于任何 MuJoCo 计算。用户可以在这里存储自定义计算的结果;请记住,所有随时间变化的内容都应存储在 mjData 中,而不是 mjModel 中。自定义文本字段可以保存在模型中。

机器人控制与仿真应用 1万+

【亲测免费】 GNURadio.app:简化Mac OS X上的GNURadio安装与使用

GNURadio.app:简化Mac OS X上的GNURadio安装与使用 项目介绍 GNURadio.app 是一个旨在简化GNURadio在Mac OS X上的安装过程的开源项目。该项目提供了一个独立的应用程序,适用于现代MacOS系统和多种常见的SDR硬件。当前版本基于GNURadio v3.8,使用Python3作为运行环境,并支持GTK3和Qt5作为UI框架。 项目技术分析 技术栈 ...

gitblog_01007的博客 1093

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HackRF结合GnuRadio发射接收广播

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

Stitch_7的博客 8038

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【GNURadio实验报告】实验2-使用GNURadio仿真OOK信号

使用GNU Radio构建grc流程图仿真OOK/2ASK调制信号,并使用HackRF验证。期待能够为GNU Radio中文社区增添一份贡献!

WebTrapの笔记 7141

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Ubuntu 如何查看二进制文件
下一篇: python 参数传递及分类
abing0513
博客等级 码龄16年 25粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值