I do not believe that you want to encapsulate the call with [ ], even so there 
may be an issue with that command. I am unsure what the issue is but when I 
make the call:

in_sig = gr.io_signature(3,3, gr.sizeof_gr_complex)
The error message is: Can't create an instance of your block: object of type 
'io_signature_sptr' has no len()

Instead try this:
            in_sig = 3*[np.complex64],
Where 3 will end up being your variable for number of inputs.
Tim

    On Thursday, February 4, 2021, 1:23:35 PM EST, George Edwards 
<gedwards....@gmail.com> wrote:  
 
 Hi Tim,
Thanks for your suggestion! I just tried it and it does not work. The Python 
OOT def __init__(self, ....) method requires that one fills in in_sig = xxx and 
out_sig = xxx.I tried your suggestion above for variable number of inputs and 
set:in_sig = [gr.io_signature(1, -1, gr.sizeof_gr_complex)] 
and I leave the yml file as is when I had the static number of inputs (in_sig = 
[complex64, complex64, complex64]) shown below inputs:-      domain:  stream    
   dtype:  complex       multiplicity:  '3'It gives a TypeError: data type not 
understoodI tried a bunch of combinations based on the above change you 
suggested, but GRC kept failing when I tried to run it.!
Thanks again for your suggestion!Regards,George


On Thu, Feb 4, 2021 at 8:01 AM Tim Huggins <huggins.timo...@yahoo.com> wrote:

 George,
I would recommend taking a look at some of the existing blocks that have 
variable inputs to accomplish this (especially for the YML file). A YML example 
for a variable input can be found here:
https://github.com/gnuradio/gnuradio/blob/master/gr-blocks/grc/blocks_multiply_xx.block.yml
I haven't run a test using this line in a python block yet, but two different 
examples are shown below that I believe should work (or should with some minor 
tweaks). The first doesn't limit the number of inputs while the second one does 
(at 8).
gr.io_signature(1, -1, gr.sizeof_gr_complex)) gr.io_signature(1, 8, 
gr.sizeof_float)I don't know if there is a complete python reference for 
GNURadio 3.8, but this should be helpful to get you close as well: 
https://www.gnuradio.org/doc/sphinx-v3.7.9.2/
Good luck,
Tim

    On Thursday, February 4, 2021, 12:01:07 AM EST, George Edwards 
<gedwards....@gmail.com> wrote:  
 
 Hi Gavin,
Thanks for the information!
Does this mean that if I wanted 3 inputs and 5 outputs and all floating point 
values, then inside the Python code, I simply set  in_sig = [numpy.float32] 
out_sign = [numpy.float32]
And, in the yml file I set:inputs:-      domain:  stream       dtype:  float    
   multiplicity:  '3'
outputs: -        domain:  stream         dtype:  float         multiplicity:  
'5'
Would this be correct?Thanks again for your help!
Regards,George
On Wed, Feb 3, 2021 at 5:26 PM Gavin Jacobs <apriljunk...@hotmail.com> wrote:

In 3.7, you would use the <nports> tag, but in 3.8 the trick to setting 
multiple ins/outs in the YML file, is the keyword "multiplicity". You can see 
the details of how to configure 
here:https://wiki.gnuradio.org/index.php/YAML_GRC


| YAML GRC - GNU RadioStarting with release 3.8, YAML replaces XML as the file 
format for GNU Radio Companion. This is triggered by switching from Cheetah to 
Mako as the templating engine, since Cheetah does not support Python 
3.wiki.gnuradio.org |



  
  

Reply via email to