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)。

猜你喜欢

转载自blog.csdn.net/q1234luo/article/details/79192767