对于这个冗长的问题,我事先表示歉意。我要确保我一切都顺利。我已经在GNU Radio的帮助下(并使用USRP b200)设置了看似简单的python脚本来连续接收信号,并且当该信号达到一定功率水平时,阈值变量将使用户知道信号具有被检测到,然后我想开始收集该信号以便以后查看。因此,我有一个python脚本,等待检测到信号,然后在检测到信号时,它将使用另一个python脚本开始收集。问题是,USRP不允许我同时收货。 USRP是否可以同时接收和收集?

我的GNU Radio设置

UHD: USRP Source ---> Low Pass Filter ---> Complex to Mag^2 ---> Threshold ---> Probe Signal


带有功能探头和标签(向用户显示是否检测到信号)

GNU生成/我更新的Python代码

Class autoCollect(gr.top_block, Qt.QWidget):

    def __init__(self):
        .
        .    #some setup stuff
        .
        def _probe_variable_probe():
            while True:
                val = self.probe_signal.level()
                try:
                    self.set_probe_variable(val)
                except AttributeError:
                    pass
                if val == 1.0    # If there is a signal detected...
                    p = subprocess.Popen("python USRP_collect.py", shell=True)
                    p.wait()
        _probe_variable_thread = threading.Thread(target=_probe_variable_probe)
        _probe_variable_thread.daemon = True
        _probe_variable_thread.start()
        .
        .    #some more setup stuff
        .

if __name__ == '__main__':
    tb = autoCollect()
    tb.start()
    tb.show()


USRP_Collect

Class usrp_read(...):

    def __init__(...)
    .
    .
    .
if name == '__main__':
    tb = usrp_read(...)
    tb.run()


问题:
当我尝试要求USRP_collect在我的autoCollect脚本中运行时,它开始运行它,但是当它进入tb = usrp_read()时,它给出一个错误

Traceback (most recent call last):
    File "USRP_collect.py", line 29, in __init__


然后是运行时错误

empty device address


我尝试运行视图文件而不是收集文件(视图仅显示信号的fft,它可以单独运行),当我尝试调用该类时,它也会给我同样的错误。

最佳答案

USRP是否可以同时接收和收集?


是的,所有设备都具有全双工功能。

您的错误是尝试通过两个过程使用相同的USRP。那行不通–您需要将接收器和发送器集成在同一流程图/过程中。

实际上,在GNU Radio中这很容易:只需在一个流程图中使用USRP接收器和源即可。我不知道您的流程图是做什么的,但我也知道:信号探针几乎肯定不是走的路。

09-12 21:39