2017-07-06 16 views
1

私はGNU Radioが新しく、入出力バッファの仕組みの理解に問題があります。GNU Radioの入出力バッファはどのように機能しますか?

1つの入力ポートと2つの出力ポートでブロックを作りたいとします。さらに、固定サイズ入力を同じ数の項目を持つ2つの出力ストリームに分割したいとします。

私は最初に1つの入力ポートと1つの出力ポートを持つブロックを作った。それは4つの要素を受け取り、他のすべてを出力ポートに置く必要があります。すなわち、1,2,3,4の入力値の場合は、1と3を出力します。次のように予測と一般的な作業方法をオーバーライドしました。簡単なデバッグのためのprintf関数):set_max_noutput_items(2)をコンストラクタとも呼びます。 予測関数がブロックにサイズ4の入力が必要であることを伝えることを期待していました。それ以後、一般的な作業関数はこれらのアイテムを処理し、2番目ごとに出力します。

残念ながら、Pythonテストを書いた後、予期せぬ結果が多かったので、私はバッファの概念を正しく理解していないと考えました。テストのために :

src_data = array ([ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0]) 

    expected_result1 = (1.0, 3.0, 5.0) 

    src = blocks.vector_source_f(src_data) 
    dmx = tutorial.test_block(number) 
    dst1 = blocks.vector_sink_f() 

    self.tb.connect(src, dmx) 
    self.tb.connect(dmx, dst1) 
    self.tb.run (4) 

私が受け取ってきました:

4: Forcast, number of noutput_items 2 
4: Forcast, required input items 4 
4: Forcast, number of noutput_items 1 
4: Forcast, required input items 2 
4: Forcast, number of noutput_items 2 
4: Forcast, required input items 4 
4: General work, number of input items 6, number of output items 2 
4: out 1.000000, in 1.000000 
4: out 3.000000, in 3.000000 
4: out 5.000000, in 5.000000 
4: Forcast, number of noutput_items 2 
4: Forcast, required input items 4 
4: Forcast, number of noutput_items 1 
4: Forcast, required input items 2 
4: General work, number of input items 2, number of output items 1 
4: out 5.000000, in 5.000000 
4: Forcast, number of noutput_items 2 
4: Forcast, required input items 4 
4: Forcast, number of noutput_items 1 
4: Forcast, required input items 2 
4: (1.0, 3.0, 5.0, 0.0, 5.0, 0.0) 

誰かが私はGNUラジオがそれらのゼロを手に入れたところから理解するのに役立ちますし、なぜそれがその順序で予測メソッドを呼び出すない場合は? :)

答えて

0

general_workは、このメソッド呼び出しで生成された出力の数を返す必要があり、処理する数値または入力要素を受け取るべきconsumeがあるはずです。だから、私の場合、予想される結果を得るためには、ninput_items(consume_each(ninput_items))とreturn ninput_items/2

でconsume_eachを呼び出す必要があります。
関連する問題