对于这个冗长的问题,我事先表示歉意。我要确保我一切都顺利。我已经在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接收器和源即可。我不知道您的流程图是做什么的,但我也知道:信号探针几乎肯定不是走的路。