200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > (四)GNURadio3.7 自定义模块——C++

(四)GNURadio3.7 自定义模块——C++

时间:2018-08-11 10:13:29

相关推荐

(四)GNURadio3.7 自定义模块——C++

(三)GNURadio3.7 自定义模块——C++

一、创建一个自定义树二、使用C++写模块square_ff1、使用gr_modtool添加一个新模块2、编写测试代码3、编写lib\文件三、使用CMake1、CMake构建2、CMake测试四、GRC绑定五、安装模块六、在GNURadio中使用新模块七、参考文献

本文是使用官方教程中的模块自定义方法进行自定义,使用的GNURadio版本为3.7,3.9版本一样可以使用,但要注意文件结构:3.7以下版本使用的是xml,3.8以上的版本使用的是yml

在本文中将gr_modtool newmod命令创建的文件夹称为树,紧接着在树里面创建的叫模块。这与官方文档的解释是不同的。

本文定义的模块功能为实现平方

一、创建一个自定义树

使用gr_modtool命令创建howto树

创建成功之后,可以在主目录中找到gr-howto文件夹:

通过ls命令可以看到howto树的结构

二、使用C++写模块square_ff

1、使用gr_modtool添加一个新模块

生成了5个文件:square_ff_impl.h、、square_ff.h、qa_square_ff.py、howto_square_ff.xml。

2、编写测试代码

打开python/qa_square_ff.py,写入以下内容:

修改python/CMakeLists.txt,使得以上修改的测试生效

注1:这里的变换基本上是最后一行调用测试qa文件的变化,若编写了新的qa文件,一般会在最后一行显示,若没有,则需要自行添加,添加的代码格式与最后一行一致。

注2:在3.9版本中,还需要去掉swig一行。

3、编写lib\文件

gr-modtool创建模块时已经创建的文件中,只需要把<++>改为指定内容即可。

编写输入输出结构定义

编写输入与输出的对应关系

编写square_ff要实现的功能

三、使用CMake

1、CMake构建

cmake …/写入build目录下

make进行下一步构建

2、CMake测试

在构建完成后,可以在安装前先通过测试,看看之前的编写是否成功,若有报错还可以进行错误的更正。

注:如若这里报错,可以通过ctest -V命令进行测试(如:ctest -V -R square)。

四、GRC绑定

编写xml文件

五、安装模块

使用CMake安装已经编写完成的模块

这里命令行较长,只放出最主要的。

最后再使用sudo ldconfig命令来重新加载库,到这里便完成了一个新模块的创建。

六、在GNURadio中使用新模块

打开GNURadio,新建如下流图:

输入0,1,2,3,4,5的向量组,将他们平方后输出。运行后结果如下:

可以看到输出端得到的是0,1,4,9,16,25。新模块实现了平方的功能。

七、参考文献

GNURadio:Tutorials

GNURadio:OutOfTreeModules

GNURadio:XML GRC

GNURadio:YAML GRC

关于Python的自定义模块法可参考:GNURadio:Embedded Python Block

知乎:GNURadio开发入门(作者楚友马)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。