Обратные вызовы GNU Radio в Python не работаютPython

Программы на Python
Ответить
Anonymous
 Обратные вызовы GNU Radio в Python не работают

Сообщение Anonymous »

Я пытаюсь создать модуль GNU Radio 3.10 OOT для тестирования обратных вызовов, но не могу получить обратный вызов Python при запуске изменения параметра.
Я просмотрел руководство Python GNU Radio OOT и изменил его, добавив информацию о том, как добавить обратный вызов в YAML на основе этой документации.
Добавленный мной обратный вызов называется «set_selector». Я предполагаю, что всякий раз, когда я меняю параметр селектора в графическом интерфейсе GNU Radio во время работы потокового графа, обратный вызов set_selector в Python срабатывает и что-то печатает. Но этого никогда не происходит.
Почему не срабатывает обратный вызов? Я пропустил какой-то шаг по регистрации обратного вызова или я неправильно понимаю?
И просто для подтверждения я перекомпилировал с помощью make, sudo make install, sudo ldconfig после изменений. Блок в GRC показывает подчеркивание параметра селектора, указывая на то, что у него есть обратный вызов.
Код Python
import numpy as np
from gnuradio import gr

class addSubSelect(gr.sync_block):
"""
docstring for block addSubSelect
"""
def __init__(self, selector=True):
gr.sync_block.__init__(self,
name="addSubSelect",
in_sig=[np.complex64, np.complex64],
out_sig=[np.complex64])

self.selector = selector

def set_selector(self, selector):
print("IN CALLBACK")

def work(self, input_items, output_items):
in0 = input_items[0]
in1 = input_items[1]

if (self.selector):
output_items[0][:] = in0 + in1
else:
output_items[0][:] = in0 - in1

return len(output_items[0])

YAML-код
id: callbackTest_addSubSelect
label: addSubSelect
category: '[callbackTest]'

templates:
imports: from gnuradio import callbackTest
make: callbackTest.addSubSelect(${selector})
callbacks:
- set_selector(${selector})
# Make one 'parameters' list entry for every parameter you want settable from the GUI.
# Keys include:
# * id (makes the value accessible as keyname, e.g. in the make entry)
# * label (label shown in the GUI)
# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
# * default
parameters:
- id: selector
label: Add (True) or Subtract (False) selector
dtype: bool
default: True
#- id: ...
# label: ...
# dtype: ...

# Make one 'inputs' list entry per input and one 'outputs' list entry per output.
# Keys include:
# * label (an identifier for the GUI)
# * domain (optional - stream or message. Default is stream)
# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
# * vlen (optional - data stream vector length. Default is 1)
# * optional (optional - set to 1 for optional inputs. Default is 0)
inputs:
- label: in0
domain: stream
dtype: complex
- label: in1
domain: stream
dtype: complex

# vlen: ...
# optional: ...

outputs:
- label: out0
domain: stream
dtype: complex
# vlen: ...
# optional: ...

# 'file_format' specifies the version of the GRC yml format used in the file
# and should usually not be changed.
file_format: 1


Подробнее здесь: https://stackoverflow.com/questions/733 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»