gnuradio为使用者提供了图形界面,允许使用者编辑可视化的流图。而本质上,可执行的gnuradio应用是一段python脚本。从图形化界面(GRC)到python的翻译是由gnuradio自动实现的,而为其翻译提供关于流图中block的信息的即是block的属性窗口。本文将对常用的属性窗口内容进行简单的介绍,官方介绍详见http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioCompanion。
我们给出一个block属性窗口图形界面的例子,该例子包含了属性窗口的大部分元素:
这是一个gfsk调制block的属性窗口,可以看到它有6个属性,其中ID是block实例的名字,verbose和log属性是和调试相关的属性。而剩下的三个属性则是具体的调制参数。其对应的xml文件内容如下:
GFSK Mod
digital_gfsk_mod
from gnuradio import digital
digital.gfsk_mod(
samples_per_symbol=$samples_per_symbol,
sensitivity=$sensitivity,
bt=$bt,
verbose=$verbose,
log=$log,
)
Samples/Symbol
samples_per_symbol
2
int
Sensitivity
sensitivity
1.0
real
BT
bt
0.35
real
Verbose
verbose
False
bool
#if str($verbose) == 'False' then 'part' else 'none'#
Log
log
False
bool
#if str($log) == 'False' then 'part' else 'none'#
in
byte
在这里,我们对上述代码片中出现的标签逐一介绍,读者可以将上文中图形化模块,图形化属性窗口以及xml的内容互相对照:
上述标签是不需要用户编写的,当使用gr_modtool创建一个block时,包含上述标签的xml文件也会被自动创建。而剩下的三个标签,、
定义了生成block实例时所需的参数,一个参数往往具有以下几个属性:
: 定义了图形化模块和属性窗口中属性的名称。
: 定义了属性的标识符。
: 定义了属性的默认值。
: 定义了属性的类型。常见的类型包括int、real、complex、int_vector、real_vector、complex_vector、enum、bool、string和raw。其中raw代表任意类型。
: 定义了参数在图形化模块中的显示方式,其取值为none, part, all,分别对应不同程度的显示。
: 定义了图形化模块的输入输出端的显示名称。
: 定义了输入输出流的类型,包括complex、float、int、short、byte
: 定义了输入输出流中一个item包含基础类型数据的个数。
: 定义了图形化模块和属性窗口中属性的名称。
: 定义了属性的标识符。
: 定义了属性的默认值。
: 定义了属性的类型。常见的类型包括int、real、complex、int_vector、real_vector、complex_vector、enum、string和raw。其中raw代表任意类型。
此外,还有一些上述xml中没有出现的标签:
ibeacon_source模块中定义参数major并检查major值是否是0~65535范围的整数(注意由于小于号 < 是关键字,因此在xml中需要使用转义符号<):
Major
major
1
int
0 <= $major <= 65535
import re
UUID
uuid
"152FD58B-F3B1-4FA9-A403-CC897B8A17A3"
string
re.match("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", $uuid)