---恢復內容開始---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 具體是怎麼工做的,咱們可能或早或晚都須要進一步去看哪些代碼。