---恢复内容开始---
参考:http://gnuradio.org/redmine/projects/gnuradio/wiki/TutorialsWritePythonApplications
导入模块的语句
from gnuradio import MODULENAME
常用模块由如下及个
gr gnuradio 的主要库,基本上每个程序都需要用到
analog 和模拟信号和模拟信号调制有关的功能
audio 声卡控制,可以用来向声卡发送信息 或者通过声卡接收信息
blocks 所有不属于其他模块的东西,可能就放在这
channels 仿真所用的信号模型
digital 与analog, 所用和数字信号调制有关的功能在这
fft 和ffts 有关的功能
fec 和fex有关的贡呢
filter 过滤器模块
plotdata 绘制数据
qtgui 和表示数据有关的图形界面(使用QT库)
wxgui 包含快速创建流图的用户界面的一些实体
vocoder 和声音编码有关的一些功能
wavelet 和微波有关的一些功能
gru 各种各样和数学及其他有关的一些功能实体
选择,定义和设置模块。如何选择模块对于我们来说是挺男的一个事,因为GNU RADIO提供了大量的预先定义的模块。
因此我们需要查阅一些文档。而如何使用这些文档也是学习。
下列3行代码,是定义blocks的句子,
1 src0 = analog.sig_source_f (sample_rate, analog.GR_SIN_WAVE, 350, ampl) 2 src1 = analog.sig_source_f (sample_rate, analog.GR_SIN_WAVE, 440, ampl) 3 dst = audio.sink (sample_rate, "")
在Lin1-2 中,一个名字 sig_source_f 的函数呗调用了,并且收到了4个函数参数
1. 采样频率 sample_rate 2. analog.GR_SIN_WAVE, analog 模块中定义的一个常量,在这里告知信号生产的类型
3. 350/440 一个常量,代表生产信号的频率
4. ample 一个表示生成信号幅度的变量。
问题是,在预先不知道这段代码的情况下,我怎么知道我要将哪些参数传递给 sig_source_f
?
答案就是:查阅文档,我们需要寻找 sig_source_f 地址:http://gnuradio.org/doc/doxygen/classgr_1_1analog_1_1sig__source__f.html
其中包好很多 sig_source_× , f 代表生成信号是浮点数。其他的有:
c: 复数浮点型
i: 整型
s: 短整型
b: 位,其实也是整数
例如 gr::filter::fir_filter_ccf Class
代表 FIR filter with gr_complex input, gr_complex output, and float taps.
gr::blocks::add_const_ff
代表 output = input + constant 数据类型都是浮点数
GNuradio blocks 都是用C++ 写的,但是我在在调用的时候用的是python, 之所有可以这么使用的原因是,gnuradio 使用了一种被称之为SWIG的工具来创建python和C++之间的借口。
每一个c++ blocks 都有一个创建函数, gr::component::block::make(***) 例如 gr::analog::sig_source_f::make()
。 这个创建函数,经常是位于和对应类的同一页面,并且能够同样输出到python, 可以通过python调用。 当然为了了解这些blocks 具体是怎么工作的,我们可能或早或晚都需要进一步去看哪些代码。