Планирование рабочей функции GNURadio [general_] для пользовательского исходного блока

Я пытаюсь реализовать исходный блок GNURadio в Python, который должен создавать вектор фиксированного размера при каждом вызове рабочей функции [general_].

В качестве первого примера-игрушки я попытался вывести просто вектор постоянных значений, которые должны меняться при каждом вызове рабочей функции [general_].

import numpy
import sys
from gnuradio import gr

class my_source_vf(gr.sync_block):
    """
    docstring for block 
    """
    def __init__(self, v_size):
        self.v_size = v_size
        self.mult = 1
        self.buff = numpy.ones(v_size)
        gr.sync_block.__init__(self,
            name="my_source_vf",
            in_sig=None,
            #out_sig=[numpy.float32])
            out_sig=[(numpy.float32, self.v_size)])


    def work(self, input_items, output_items):
        # <+signal processing here+>
        print len(output_items)

        out = output_items[0]
        out[0][:] = self.buff*self.mult
        self.mult = self.mult+1

        return self.v_size

Однако, когда я подключаю его к блоку приемника QT GUI Vector, я просто вижу колебания между 0 и 1, что позволяет мне думать, что рабочая функция [general_] вызывается только один раз.


person Frank    schedule 08.06.2017    source источник


Ответы (1)


Вы не должны возвращать v_size — это длина одного элемента, но вы должны возвращать количество элементов, созданных вами для этого вызова.

person Marcus Müller    schedule 08.06.2017