如何在gnuradio中编写自己的C++模块
1个回答
展开全部
虽
然gnuradio给我们提供了近百种常用的功能模块block,但是在我们自己的系统设计中,需要不同的模块完成特定的功能,这样就需要我们自己来编写
C++源代码,生成新的block以供系统调用。如果源代码、编译文件都要自己编写,需要很强的专业知识,对于我这样的初学者来说费时费力。网上有很其他
的方法,如利用模板、下载现成的脚本等等。自己参照的官方网站上的教程,通过gr-modtool这个脚本辅助工具完成了一个简单模块从编写到导入
gnuradio-companion的全过程。
首先到https://github.com/mbant/gr-modtool下
载gr-modtool。解压之后得到一个gr-modtool-master的文件夹,并将此路径添加到系统的PATH中。进入你想要建立模块的目录,
这里以在:/home/jim/code[jim是我的用户名]路径下建立howto_square_ff模块为例,进入目的路径,然后在终端里输入
gr_modtool.py create howto
这样就生成了一个名为gr-howto的文件夹以及一个模块的目录结构。
接
下来就是编写C++源代码。我们需要写一个.h的头文件,一个.cc的源代码,并分别修改include/CMakeLists.txt和lib
/CMakeLists.txt。这些要生成的文件和修改的内容都可以通过gr-modtool来自动帮我们完成。先进入刚才生成的gr-howto文件
夹,在终端输入
gr_modtool.py add -t general square_ff
显示如下[中间需要输入一个回车,以及两次n]
GNU Radio module name identified: howto
Code is of type: general
Block/code identifier: square_ff
Full block/code identifier is: howto_square_ff
Enter valid argument list, including default arguments:
Add Python QA code? [Y/n] n
Add C++ QA code? [Y/n] n
Traversing lib...
Adding file 'howto_square_ff.h'...
Adding file 'howto_square_ff.cc'...
Traversing swig...
Editing swig/howto_swig.i...
Traversing python...
Editing python/CMakeLists.txt...
Traversing grc...
Adding file 'howto_square_ff.xml'...
Editing grc/CMakeLists.txt...
接下来我们就可以按照提供的例程打开相应的.h和.cc文件进行修改。
source:gr-howto-write-a-block/include/howto_square_ff.h
source:gr-howto-write-a-block/lib/howto_square_ff.cc
整个模块的目的是对输入的数据进行平方运算。为此还需要写一个验证程序并修改相应的CMakeLists.txt文件。在python目录下添加一个新的名为qa_howto.py的文件。内容参见例程。并对CMakeLists.txt进行如下修改
include(GrTest)
set(GR_TEST_TARGET_DEPS gnuradio-howto)
set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig)
GR_ADD_TEST(qa_howto ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_howto.py)
最后的工作就是生成模块并安装到gnuradio-companion中。进入gr-howto目录,在终端输入cmake ./,然后输入make,即生成了模块。接着输入make test,如果全部通过测试,则证明模块生成成功。
如果想在gnuradio-companion中使用自己的模块,还必须在grc目录下生成xml文件。在终端输入
gr-modtool.py makexml square_ff
打开xml文件并参照例程进行修改。source:gr-howto-write-a-block/grc/howto_square_ff.xml
最后回到gr-howto目录,输入sudo make install即可安装。输入gnuradio-companion即可看到你自己生成的模块。至此全部过程结束。
gr-modtool这个脚本为我们编写自己的数字信息处理模块提供了很大的方便,如果想清楚的知道每一部分的作用,可能还要一点点的手动安装,但是对于初学的我来说这个工具是很适用的。
然gnuradio给我们提供了近百种常用的功能模块block,但是在我们自己的系统设计中,需要不同的模块完成特定的功能,这样就需要我们自己来编写
C++源代码,生成新的block以供系统调用。如果源代码、编译文件都要自己编写,需要很强的专业知识,对于我这样的初学者来说费时费力。网上有很其他
的方法,如利用模板、下载现成的脚本等等。自己参照的官方网站上的教程,通过gr-modtool这个脚本辅助工具完成了一个简单模块从编写到导入
gnuradio-companion的全过程。
首先到https://github.com/mbant/gr-modtool下
载gr-modtool。解压之后得到一个gr-modtool-master的文件夹,并将此路径添加到系统的PATH中。进入你想要建立模块的目录,
这里以在:/home/jim/code[jim是我的用户名]路径下建立howto_square_ff模块为例,进入目的路径,然后在终端里输入
gr_modtool.py create howto
这样就生成了一个名为gr-howto的文件夹以及一个模块的目录结构。
接
下来就是编写C++源代码。我们需要写一个.h的头文件,一个.cc的源代码,并分别修改include/CMakeLists.txt和lib
/CMakeLists.txt。这些要生成的文件和修改的内容都可以通过gr-modtool来自动帮我们完成。先进入刚才生成的gr-howto文件
夹,在终端输入
gr_modtool.py add -t general square_ff
显示如下[中间需要输入一个回车,以及两次n]
GNU Radio module name identified: howto
Code is of type: general
Block/code identifier: square_ff
Full block/code identifier is: howto_square_ff
Enter valid argument list, including default arguments:
Add Python QA code? [Y/n] n
Add C++ QA code? [Y/n] n
Traversing lib...
Adding file 'howto_square_ff.h'...
Adding file 'howto_square_ff.cc'...
Traversing swig...
Editing swig/howto_swig.i...
Traversing python...
Editing python/CMakeLists.txt...
Traversing grc...
Adding file 'howto_square_ff.xml'...
Editing grc/CMakeLists.txt...
接下来我们就可以按照提供的例程打开相应的.h和.cc文件进行修改。
source:gr-howto-write-a-block/include/howto_square_ff.h
source:gr-howto-write-a-block/lib/howto_square_ff.cc
整个模块的目的是对输入的数据进行平方运算。为此还需要写一个验证程序并修改相应的CMakeLists.txt文件。在python目录下添加一个新的名为qa_howto.py的文件。内容参见例程。并对CMakeLists.txt进行如下修改
include(GrTest)
set(GR_TEST_TARGET_DEPS gnuradio-howto)
set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig)
GR_ADD_TEST(qa_howto ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_howto.py)
最后的工作就是生成模块并安装到gnuradio-companion中。进入gr-howto目录,在终端输入cmake ./,然后输入make,即生成了模块。接着输入make test,如果全部通过测试,则证明模块生成成功。
如果想在gnuradio-companion中使用自己的模块,还必须在grc目录下生成xml文件。在终端输入
gr-modtool.py makexml square_ff
打开xml文件并参照例程进行修改。source:gr-howto-write-a-block/grc/howto_square_ff.xml
最后回到gr-howto目录,输入sudo make install即可安装。输入gnuradio-companion即可看到你自己生成的模块。至此全部过程结束。
gr-modtool这个脚本为我们编写自己的数字信息处理模块提供了很大的方便,如果想清楚的知道每一部分的作用,可能还要一点点的手动安装,但是对于初学的我来说这个工具是很适用的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询