在头部阻塞停止(挂起)后,如何重新启动gnuradio的流程图?



我正在使用gnuradio 3.10.4and usrpB200mini.
我的流程图很简单:

usrp source ->头块->文件水槽

我想存储固定数量的数据到文件接收器,然后重新配置usrp并启动它再次存储。
我的Python程序喜欢:

tb.start()
tb.wait()
tb.lock()
...reconfigure usrp...
tb.unlock()
tb.start()
...

但是第二次使用tb.start()时,可以成功创建文件,但没有向其写入数据。谁能告诉我这个程序有什么问题或提供任何相关的文档,因为我发现很少。
感谢您的支持。

当你不确定如何让一个块做你想做的事情时,或者如果它可以,查阅块的源代码是很有用的,因为GNU Radio块并不总是完整的文档。

从Head的这个wiki页面开始,我们可以看到所有的代码。它是c++,但相当简单,你可以忽略所有的设置,只看那些似乎在工作的行。

head_impl.cc中的head_impl::work中,我们可以看到块的工作方式是计算它在d_ncopied_items中传递的项目数量,并将其与d_nitems(您提供的值)进行比较。这里没有任何东西可以重新开始计数。

我们还必须检查头文件head_impl.h,因为代码也可能在那里。在那里我们找到了你需要的东西:

void reset() override { d_ncopied_items = 0; }

那么,在头块上调用reset(),它将忘记它已经复制了多少项。

最新更新