GNU Radio io_signature

Я вхожу в GNU Radio, и после того, как я создал новый блок, в основном классе у меня есть код, похожий на этот:

square_ff_impl::square_ff_impl()
: gr::block("square_ff",
gr::io_signature::make(<+IMIN+>, <+IMAX+>, sizeof (<+ITYPE+>)), // input signature
gr::io_signature::make(<+OMIN+>, <+OMAX+>, sizeof (<+OTYPE+>))) // output signature
{
// empty constructor
}

Я действительно не знаю точно, что положить в MIN и MAX (даже после прочтения документа).

Можете ли вы дать мне несколько примеров, пожалуйста?

2

Решение

IMIN - minimum number of acceptable input ports
IMAX - maximum number of acceptable input ports
OMIN - minimum number of acceptable output ports
OMAX - maximum number of acceptable output ports

Документация говорит об этом немного в части IOSignatures BlocksCodingGuide:

  • Первые два параметра — это минимальное и максимальное количество портов, это позволяет
    блоки для выбора количества портов во время выполнения.

Значение -1 означает «неограниченно».

В качестве примера исходного блока взгляните на IO-сигнатуру нулевой источник блок, который не требует ввода:

null_source_impl::null_source_impl (size_t sizeof_stream_item)
: sync_block("null_source",
io_signature::make(0, 0, 0),
io_signature::make(1, -1, sizeof_stream_item))
{
}

Для раковины, проверьте нулевая раковина, который не имеет выхода:

null_sink_impl::null_sink_impl(size_t sizeof_stream_item)
: sync_block("null_sink",
io_signature::make(1, -1, sizeof_stream_item),
io_signature::make(0, 0, 0))
{
}

И простые блоки обработки, add_ff, который принимает неограниченный ввод и производит ровно 1 выходной поток:

add_ff_impl::add_ff_impl(size_t vlen)
: sync_block("add_ff",
io_signature::make (1, -1, sizeof(float)*vlen),
io_signature::make (1,  1, sizeof(float)*vlen)),
d_vlen(vlen)
{
...
3

Другие решения


По вопросам рекламы [email protected]