Я пытаюсь создать модуль 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
Обратные вызовы GNU Radio в Python не работают ⇐ Python
Программы на Python
-
Anonymous
1767829250
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 показывает подчеркивание параметра селектора, указывая на то, что у него есть обратный вызов.
[b]Код Python[/b]
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])
[b]YAML-код[/b]
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
Подробнее здесь: [url]https://stackoverflow.com/questions/73329671/gnu-radio-callbacks-in-python-are-not-working[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия