Je m'excuse d'avance pour la longue question. Je veux m'assurer de tout avoir. J'ai mis en place un script python apparemment simple avec l'aide de GNU Radio (et en utilisant un USRP b200) pour recevoir un signal en continu, et quand ce signal atteint un certain niveau de puissance, une variable de seuil permet à l'utilisateur de connaitre un signal. été détecté et je veux commencer à recueillir ce signal pour le voir plus tard. J'ai donc un script python qui attend qu'un signal soit détecté, et quand il l'est, il va commencer à collecter en utilisant un autre script python. Le problème est, l'USRP ne me laissera pas recevoir et collecter en même temps. Les USRP peuvent-ils recevoir et collecter simultanément?GNU Radio/Python - USRP recevoir et collecter en même temps
Ma configuration GNU Radio
UHD: USRP Source ---> Low Pass Filter ---> Complex to Mag^2 ---> Threshold ---> Probe Signal
avec une sonde de fonction et une étiquette (pour montrer à l'utilisateur si un signal est détecté)
GNU généré/mon mise à jour du code 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_Co llect
Class usrp_read(...):
def __init__(...)
.
.
.
if name == '__main__':
tb = usrp_read(...)
tb.run()
Problème: Quand je tente d'appeler pour USRP_collect à courir dans mon script autoCollect, il commence à courir mais quand il arrive à tb = usrp_read()
donne une erreur
Traceback (most recent call last):
File "USRP_collect.py", line 29, in __init__
Ensuite, une erreur d'exécution
empty device address
J'ai essayé d'exécuter un fichier de vue à la place du fichier de collecte (la vue affiche seulement un fft du signal, qui fonctionne tout seul) et il me donne la même erreur, quand j'essaye d'appeler la classe.
Eh bien, fondamentalement, j'essaie de recevoir un signal que je transmets en utilisant un autre USRP (fonctionnant). Ensuite, je veux savoir si le niveau de puissance du signal est suffisamment élevé pour que je puisse déterminer s'il y a un signal présent. J'ai fait tout cela en mettant un seuil et la sonde à mettre à jour constamment et laissez-moi savoir s'il y a un signal. Une idée de comment je peux continuer à travailler pendant la collecte si le signal est présent? – BBEng