我正在使用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()
,它将忘记它已经复制了多少项。