GNURadio之osmosdr source block添加一個輸入口

由於是source block,所以在創建爲source塊後,一般默認爲只有輸出口,如果不想創建爲source block。可以在創建的時候選擇爲general屬性即可。但是如果一開始就創建爲source block,也不用着急,本文章就是來解決這個問題的。

整個過程分爲三步驟:

1.gr::io_signature::make(),利用find指令:find /home -name "*.*" | xargs grep "gr::io_signature::make()",尋找在相應文件目錄下的與目標文件有關的gr::io_signature::make()的程序行,然後此函數的前面兩個參數修改爲你想要的數,如gr_make_io_signature(2,2,sizeof(float)),gr_make_io_signature(1,1,sizeof(float)),這個就是創建了一個具有兩個輸入口、一個輸出口的block。如果我想把source block修改爲一輸入一輸出,只需要在原有的基礎上利用上面提到的find指令找與source block相關的gr::io_signature::make(),將gr_make_io_signature(0,0,0)全部修改爲gr_make_io_signature(1,1,sizeof(float)),全部修改完之後就不會出現“端口數超過0”之類的錯誤。注意:在修改的時候,一般是在設定IO數的程序那修改。這樣就在source block裏面設置了一個輸入端口。

2.在source block的外部封裝上設置好一個輸入口。打開與source相關的osmosdr_source.xml文件,在這個.xml文件中可以設置source block的名字以及其他參數,當然也可以設置輸入輸出端口的數量。尋找到設置輸出口的語句,也就是<source> </source>語句,在其附近加上<sink> </sink>語句,使用同輸出口的一樣的參數即可。這樣就設置好了外部封裝的輸入口。

3.內部程序和外部封裝都設置好一個輸入口之後,最後就是在source_impl.cc文件裏添加把輸入口與source block連接起來的語句,在此文件添加connect語句connect(self,channel,0),就是將輸入端口0與source block 連接起來,如果想將輸入端口1與source block 連接起來就將語句改爲connect(self,channel+1,1)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章