python3中添加自定义GRC模块的二次开发方法

经验分享:python3中添加自定义GRC模块的二次开发方法

目前能查到的绝大多数是python2和旧版本GnuRadio下的,与python3和新版GnuRadio(3.8.X以后的)下有很大差异,参考价值有限。

经过本人琢磨,总算用树莓派(DeBain系统,UBUNTU也一样)实现了在python3和GnuRadio3.8.X中添加自定义GRC模块集合的二次开发方法!

前提工具:需要安装python3和新版GnuRadio3.8.X,用到cmake、gr_modtool、python3等命令。

一、首先,用gr_modtool生成自定义GRC模块的框架代码

不知道怎么样时,用以下命令查询:
gr_modtool newmod --help
gr_modtool add --help

1.  用gr_modtool命令新建自定义模块的集合,生成对应文件夹: gr_modtool newmod -d MyModel
2.  用cd命令进入文件夹: cd MyModel\gr-MyModel\
3. 用gr_modtool命令在该文件夹内新建1个模块(需要指定模块类型和名称,参数),例如: gr_modtool add -t sync ReadMyRfData  
4.  可以再建其他模块,例如:gr_modtool add -t sync SendMyRfData 

 注意. 添加模块时,可以选择生成python还是C,这里用的python

二、基于某个python编程环境,改写自定义GRC模块的代码,编译

进入模块的文件夹,查看自动生成的py程序源文件,修改输入、输出接口和处理函数代码(按GRC的模块要求写)
完成后用python3中的compileall编译相关模块的py程序
python3 -m compileall -b /home/pi/MyModel/gr-MyModel/python/ 编译所有文件
python3 -m compileall -b /home/pi/MyModel/gr-MyModel/python/__init__.py
python3 -m compileall -b /home/pi/MyModel/gr-MyModel/python/ReadMyRfData.py
python3 -m compileall -b /home/pi/MyModel/gr-MyModel/python/SendMyRfData.py

三、用cmake命令生成安装脚本cmake_install.cmake,确保生成的安装脚本正确。
sudo cmake -S  /home/pi/MyModel/gr-MyModel -B /home/pi/MyModel/gr-MyModel

在产生的安装脚本文件python/cmake_install.cmake中,删除涉及安装*.pyo文件(用不上,不然出错)的所有文本行。
用命令: sudo nano /home/pi/MyModel/gr-MyModel/python/cmake_install.cmake 删文本行


四、然后用 sudo cmake --install /home/pi/MyModel/gr-MyModel/ 拷贝安装编译好的模块程序到GRC和系统库目录下,结果存入install_manifest.txt内,内容如下:
/usr/local/lib/cmake/MyModel/MyModelConfig.cmake
/usr/local/include/MyModel/api.h
/usr/local/lib/python3/dist-packages/MyModel/__init__.py
/usr/local/lib/python3/dist-packages/MyModel/SendMyRfData.py
/usr/local/lib/python3/dist-packages/MyModel/ReadMyRfData.py
/usr/local/lib/python3/dist-packages/MyModel/__init__.pyc
/usr/local/lib/python3/dist-packages/MyModel/SendMyRfData.pyc
/usr/local/lib/python3/dist-packages/MyModel/ReadMyRfData.pyc
/usr/local/share/gnuradio/grc/blocks/MyModel_SendMyRfData.block.yml
/usr/local/share/gnuradio/grc/blocks/MyModel_ReadMyRfData.block.yml

最后,应该可以在GRC下看到自己模块集合下对应的自定义模块了。如果看不到,检查是否模块对应的yml文件(在/home/pi/MyModel/gr-MyModel/grc)中的定义是否正确。没问题,就可以像使用GRC自带模块一样,使用自己的模块和二次开发程序了。

其实,最难的是编写自己的SDR程序模块,毕竟Python只在运行到某一步时才能发现错误,调试太不容易了!!
 

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值