我需要由USRP发送带有gnuradio和python不同文件的文件。 以一个频率发送第一个文件后,我必须再次更改USRP中的中心频率,然后发送下一个文件... 我使用File_Source和File_Sink,并且想通过python更改top_block中的文件名。 为每个步骤创建一个新的top_block没有意义:USRP的初始化需要太多时间。我以为我可以像下面的代码那样处理该问题,但是第二个文件内部不包含任何数据。 有什么建议吗?感谢您的帮助;)
对于我来说,好像一次File_source的文件路径已初始化,我无法在此top_block中为tb.blocks_file_source_0更改它。 根据文件数量,使用更多file_sources / _sinks是不方便的...
def main(top_block_cls = stepped_DF,options = None):
tb = top_block_cls()
tb.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, '/media/ramdisk/sendData1.bin', False)
tb.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, '/media/ramdisk/receiveData1.dat', False)
tb.blocks_file_sink_0.set_unbuffered(False)
tb.connect((tb.blocks_file_source_0, 0), (tb.blocks_head_0, 0))
tb.connect((tb.blocks_head_1, 0), (tb.blocks_file_sink_0, 0))
tb.start()
print "Second"
time.sleep(3)
tb.lock()
tb.disconnect((tb.blocks_file_source_0, 0), (tb.blocks_head_0, 0))
tb.disconnect((tb.blocks_head_1, 0), (tb.blocks_file_sink_0, 0))
#del tb.blocks_file_source_0
#del tb.blocks_file_sink_0
tb.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, '/media/ramdisk/sendData2.bin', False)
tb.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, '/media/ramdisk/receiveData2.dat', False)
tb.connect((tb.blocks_file_source_0, 0), (tb.blocks_head_0, 0))
tb.connect((tb.blocks_head_1, 0), (tb.blocks_file_sink_0, 0))
tb.unlock()
tb.wait()
print "Finished"