---恢复内容开始---html
参考:http://gnuradio.org/redmine/projects/gnuradio/wiki/TutorialsWritePythonApplicationspython
导入模块的语句c++
from gnuradio import MODULENAME
经常使用模块由以下及个git
gr gnuradio 的主要库,基本上每一个程序都须要用到函数
analog 和模拟信号和模拟信号调制有关的功能工具
audio 声卡控制,能够用来向声卡发送信息 或者经过声卡接收信息学习
blocks 全部不属于其余模块的东西,可能就放在这ui
channels 仿真所用的信号模型编码
digital 与analog, 所用和数字信号调制有关的功能在这spa
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 具体是怎么工做的,咱们可能或早或晚都须要进一步去看哪些代码。