J'expérimente l'écriture de scripts GNUradio en python. Mon but éventuel est d'avoir une routine qui écrit périodiquement un résultat à virgule flottante depuis un processus GNUradio vers le port série. Dans un premier temps, je voulais simplement marquer une pause une simple routine Le code suivant joue un 1kHz à travers la carte son:Interruption d'un flux GNUradio simple
`#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: simpleTone
# Generated: Wed Jun 29 07:26:02 2016
##################################################
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import gr
import time
class simpleTone(gr.top_block):
def __init__(self):
gr.top_block.__init__(self)
##################################################
# Variables
##################################################
self.samp_rate = samp_rate = 32000
##################################################
# Blocks
##################################################
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_float*1, samp_rate)
self.audio_sink_0 = audio.sink(samp_rate, "", True)
self.analog_sig_source_x_0 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 1000, 1, 0)
##################################################
# Connections
##################################################
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_throttle_0, 0))
self.connect((self.blocks_throttle_0, 0), (self.audio_sink_0, 0))
if __name__ == '__main__':
simpleTone().run()`
Le code ci-dessus fonctionne très bien, à l'exception de quelques dépassements et en cliquant dans l'audio. Toutefois, si je fais la substitution suivante:
`
if __name__ == '__main__':
simpleTone().start()
time.sleep(3)
simpleTone().stop()`
Le résultat est que l'exécution du fichier, et ne se termine au bout de 3 secondes, mais pas de son est produit.
Je suis sûr que j'ai raté quelque chose de simple, toute aide serait appréciée. Merci.
-Ed
Enlevez la manette des gaz. Vous devriez même être averti que c'est une mauvaise idée d'utiliser un bloc d'accélérateur dans un graphique de flux avec un matériel de limitation de débit réel! ** N'utilisez jamais la manette des gaz ensemble avec les éviers et les sources de matériel! ** –
Merci pour cette suggestion Marcus. Je pensais que l'utilisation d'un accélérateur était toujours «sûre» :) Supprimer le bloc d'accélérateur a résolu les problèmes de débordement/audio lors de l'exécution du programme. Le problème avec essayer de démarrer/dormir/arrêter le processus reste toujours. –