私はPythonでGNUradioスクリプトを書くことを実験しています。私の最終的な目標は、GNUradioプロセス内の浮動小数点結果をシリアルポートに定期的に書き込むルーチンを持つことです。単純なGNUradioフローを中断する
`#!/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()`
上記のコードは、オーディオでは、いくつかのオーバーフローの例外とクリックして、正常に動作します:最初のステップとして、私は単純に次のコードは、サウンドカードを通して1kHzのトーンを再生し、単純なルーチンを一時停止したかったです。私は次の置換作る場合は:
`
if __name__ == '__main__':
simpleTone().start()
time.sleep(3)
simpleTone().stop()`
を結果は、ファイルが実行されることで、3秒後に終了しないが、何の音声は生成されません。
私はかなり基本的な何かを見逃していると確信しています、どんな助けていただければ幸いです。ありがとう。
-Ed
この質問はまた、ここで提起された
スロットルを取り外します。実際のレート制限ハードウェアを搭載したフローグラフでスロットルブロックを使用することは悪い考えであるという警告が表示されるはずです。 **スロットルをハードウェアのシンクとソースと一緒に使用しないでください!** –
マーカスのご提案ありがとうございます。私はスロットルを使うのはいつも「安全」だと思っていました:)スロットルブロックを取り外すと、プログラムを実行しているときにオーバーフロー/オーディオの問題が修正されました。プロセスを開始/スリープ/ストップしようとする問題は依然として残っています。 –