我写了一个小的GNU电台节目从USRP N210捕捉和情节FFT数据。
为了避免锁定了我的图形用户界面(matplotlib和wxPython的),我只运行流图的GUI报告说,它的闲置后。
为了做到那样的时机,我使用非流图中心的方法,在GNU Radio的教程中介绍。
从本质上讲,我有一个主循环看起来像这样(伪):
topblock.set_usrp_freq()
while True:
topblock.run()
data = topblock.vector_sink.data()
thread-safe call to plot data
wait for gui.EVT_IDLE
topblock.skiphead.reset()
topblock.head.reset()
当流图基本上是这样:
self.connect(usrp, skiphead, stream_to_vector, head, fft, c2mag_sq, stats, volts_to_dBm, vector_sink)
# skiphead is modified to be resettable like head
当我使用类似的参数,我希望看到我看到的时候我跑同样的事情uhd_fft -f 700M -s 10e6
:
从我matplotlib阴谋的输出,首先非常相似,具有非常明显的LO除外。 我曾试图按照通过代码uhd_fft
,我不认为他们会做任何LO抵消,所以我的第一个问题就是问:uhd_fft避免以某种方式绘制LO,或者是我从运行我流图的方式导致LO主循环被宣判?
编辑:我已经证实了超Lo是,每次发生电压尖峰的副产品的流图是“运行()”。 你需要下降到更低至LO样本的数量可以看出,在我的随访后的时间数据: 使用简单的GNU收音机流图时,从USRP电压脉冲在Python
第二次运行后,我渐渐收到奇怪的数据绘制那绝对犯规”在uhd_fft发生。 我可以让这个消失倾倒每流图运行数千样本与skiphead
块,但我的第二个问题是:Q:为什么运行从单独的主循环导致垃圾数据流图进行绘制,即使USRP不正在重新调整? uhd_fft
采用的是流图中为中心的流程,并没有这个问题:
我的直觉是,有一些注意事项与运行未在本教程中提到的非流图中心的应用程序。