---恢復內容開始---
參考: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 具體是怎么工作的,我們可能或早或晚都需要進一步去看哪些代碼。
新聞熱點
疑難解答