1

对于这个冗长的问题,我提前道歉。我想确保我把所有东西都放下了。我在 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,它自己工作)并且当我尝试调用类时它给了我同样的错误。

4

1 回答 1

1

USRP 可以同时接收和收集吗?

是的,所有设备都支持全双工。

您的错误是尝试从两个进程中使用相同的 USRP。这是行不通的——您需要将接收器和发射器集成到同一个流程图/流程中。

事实上,在 GNU Radio 中这很容易:只需在一个流程图中使用 USRP Sink 和 Source。我不知道你的流程图做了什么,而且:信号探针几乎肯定不是要走的路。

于 2017-06-19T10:10:13.503 回答