GNU Radio のフローグラフに問題があります。私のアプリケーションではネイティブ ブロックがうまく機能しなかったため、Delay ブロックとしてカスタム ブロックを作成しました。カスタム ブロックの前に UHD ソースがあります。4M のサンプルレートで動作しています。しかし、シミュレーションを開始すると、オーバーフロー ("O") が生成されます。UHD ソースの出力をファイルに保存し、「オフライン」モードでシミュレーションを再度再生すると、オーバーフローのエラーが発生しないため、これは奇妙だと思います。つまり、「オンライン」モードで作業しているときだけ問題が発生します。UHD ソースで以前に保存されたファイルではなく、UHD ソースで作業している場合のみ。
Delay_amostra_sync ブロック コード:
numpy をインポート
gnuradio import grから
class Delay_amostra_sync(gr.sync_block): """ ブロック Delay_amostra_sync の docstring """ def init (self, var): gr.sync_block. init (self, name="Delay_amostra_sync", in_sig=[numpy.complex64], out_sig=[numpy.complex64]) self.var = var self.cont = 0
self.buffer = numpy.array([])
self.c = 1
def work(self, input_items, output_items):
in0 = input_items[0]
out = output_items[0]
self.dados = numpy.array(input_items[0], copy=True)
self.buffer = numpy.append(self.buffer, self.dados)
if self.cont >= self.var:
out[:] = self.buffer[range(0,len(out))]
self.buffer = numpy.delete(self.buffer, range(0,len(out)), 0)
self.cont = self.cont + 1