我提前为这个冗长的问题道歉。我想确保一切顺利。我在GNU Radio的帮助下(并使用USRP b200)设置了一个看似简单的python脚本来连续接收信号,当此信号达到某个功率级别时,阈值变量将让用户知道信号已经已被检测到然后我想开始收集该信号以便稍后查看。所以我有一个等待检测到信号的python脚本,然后当它出现时,它将开始使用另一个python脚本进行收集。 问题是,USRP不会让我同时接收和收集。 USRP可以同时接收和收集吗?
我的GNU广播设置
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,它可以独立工作)当我尝试调用该类时,它给了我同样的错误。
答案 0 :(得分:1)
USRP可以同时接收和收集吗?
是的,所有设备都支持全双工。
您的错误是尝试从两个进程使用相同的USRP。这不起作用 - 您需要将接收器和发射器集成到同一流程图/过程中。
事实上,在GNU Radio中这很简单:只需在一个流程图中使用USRP Sink和Source。我不知道你的流程图是做什么的,但是:信号探测器几乎肯定不是可行的方法。