本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!
本文介绍GNU Radio GRC中的一种自定义模块的实现方法。由“lswmouse”提供素材。
目录
如果需要在gnuradio下自定义自己的模块,一般情况下可以使用C++程序进行编写,具体可以参考以下教程:
Embedded Python Block - GNU Radio
该方法自定义模块较为灵活,但难度也较大,不太适合初学者。本文介绍如何利用GRC中的已有模块来实现自定义需求的模块,并将该自定义模块封装到GRC中,以便后续方便调用。具体地,本文介绍一种使用“pad source”和“pad sink”模块自定义模块的方法。如果用户想实现一种自己的功能,可以在现有模块的基础上进行搭建再封装成模块,该方法在实现一些较为简单的功能模块时操作简单,但是没有上述C++编程的方法灵活,如果需要实现一些较为复杂的功能,程序则需要从底层搭起,比较适合各系统模块较为完善的情况使用。
本文采用的是https://github.com/handiko/gr-APRS中的例子。以自定义AFSK模块对操作步骤进行介绍。包括以下几个重要步骤。
一、Options模块设置
在options模块中,需将Generate Options选择为Hier Block,
在options模块中,可以对该自定义模块的标题、作者、描述、画布大小、模块属性进行定义,模块属性的定义直接决定了该模块被搜索到时的“类”。注意:一定要在“Generate Options”这里选择“Hier Block”。
二、添加“pad source”和“pad sink”模块
Pad Source模块中的“Label”栏输入“afsk_in”,“Pad Sink”模块中的“Label”栏输入“Demod_out”。
三、添加参数模块Parameter
该模块不仅在自定义模块程序流图上需要用到,它还是自定义模块上的需用户定义的参数。该模块可对参数的ID、标签、默认值、数据类型进行定义。例如,我们定义了一个标签为“FSK 1 Tone”的参数,在封装后的AFSK Demodulator中就可以看到有一个“FSK 1 Tone”的参数数值可供用户定义。
四、点击生成按钮
点击生成按钮,就可以在Generating: '/home/opensourcesdr/.grc_gnuradio/'目录下出现.py、.pyc和.xml文件。
五、调用自定义模块
搭建一个afsk_main流图,调用之前生成的AFSK Demodulation模块。
六、有用链接
https://github.com/handiko/gr-APRS