Hi Tim, Thank you very much for your help!
The problem was with the QA file. I tried to input the 3 source streams as: src = blocks.vector_source_c(np.array([src0, src1, src2])) where each srcX was defined as a complex array. Based on the link into the github QA files that you sent me, it showed that each srcX must be connected individually to the processing block. Also, I overlooked the fact that when I ran the QA, it pointed to that line in the code as a problem. I will now try to see if I can get the output to provide a stream of 8 samples (maybe do 3 as a start) based on one sample from each of the 3-input streams. Thanks again for the help! Regards, George On Tue, Jan 19, 2021 at 2:05 PM Tim Huggins <[email protected]> wrote: > George, > > Unfortunately I'll still not seeing anything wrong with what you have (and > I realized that the QA code caused the issue so it is probably not in your > yml file). I'd probably have too see your entire code to try to reproduce > the error as all my tests to create the error didn't. > > Regarding your other questions: > 1. There isn't really a correct/incorrect as the answer can depend on the > work that you want the block to do but general will work. I mainly use > general or sync. > 2. Yes, as you have a 1 to 1 stream. > 3. This doesn't look quite correct. Are you planning on working with > vector inputs or steams to your block? if you are using streams then there > is no need to change vlen in the yml file. Also it sounds like whatever > computations are basically doing an interpolation (1 input to 8 outputs), > you may want to look at the interp_block type instead of the general block > that you are using (it might make your life a little easier, take a small > glance here: > https://github.com/gnuradio/gnuradio/blob/master/gr-blocks/python/blocks/qa_block_gateway.py). > Alternatively I think you could look at the set_output_multiple() call. > > Tim > > > > > > > > On Monday, January 18, 2021, 8:27:28 PM EST, George Edwards < > [email protected]> wrote: > > > Hi Tim, > Thanks for the offer to help! I appreciate it very much. > Here is the rest of yml file. I also have some further questions: > 1. In the gr-modtool design, I picked the "general" block, is this > correct? > 2. The current model has 3 streaming inputs. Each output sample > computation takes one sample from each input. So I leave the forecast() > method as the default which is: > ninput_items_required[i] = noutput_items, is this correct? > And, in the general_work() method, I also leave the default: > return len(output_items[0]), is this correct? > 3. The final model will have the same 3 input streams, but each > computation will produce a stream of 8 output samples. So, do I now change > the forecast() method to: > ninput_items_required[i] = noutput_items - 7 > Then, in the general_work() method do: > return len(8*input_items[0]) > Then, for the yml file set, vlen = 8 "The setting of > these parameters in Item 3 are all confusing to me" > > parameters: > > - id: scale > > label: Scale_Value > > dtype: bool > > default: True > > > > # 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: > > - domain: stream > > dtype: complex > > multiplicity: '3' > > > > # - label: in0 > > # dtype: complex > > # - label: in1 > > # dtype: complex > > # - label: in2 > > # dtype: complex > > > > outputs: > > - label: out > > dtype: complex > > > > # 'file_format' specifies the version of the GRC yml format used in the > file > > # and should usually not be changed. > > file_format: 1 > > > > > On Mon, Jan 18, 2021 at 7:50 AM Tim Huggins <[email protected]> > wrote: > > George, > > I have made several OOT Python blocks with variable numbers of inputs and > outputs and while I could very easily be overlooking something the error > does not, at first glance, appear to be in the code that you have sent out. > Can you send the rest of your yml file (and potentially the rest of the > python)? I am curious if there is something missing in either the templates > or parameters sections of your yml file. > > Tim > > On Friday, January 15, 2021, 2:56:48 PM EST, George Edwards < > [email protected]> wrote: > > > Hello, > > I am trying to make a Python OOT block which accepts a stream of 3 inputs > complex valued data and for each single input sample (one on each input > line) the block will output 8 complex samples. For my first cut, I am > simply trying to get the module to work outputting one complex sample > (rather than 8). Below are the essential parts of my program. > > 1. In the def __init__ (self.), I set the inner method > gr.basic_block.__init__(self, > name="my_block_name_py_cc", > in_sig = [numpy.complex64, numpy.complex64, numpy.complex64 ], > out_sig = [ numpy.complex64 ]) # with 3 inputs and one output > > 2. In the general_work() method for now I set the output to a > constant complex value as follows > out_items[0][:] = 1.0+1.0*1j > > 3. In the *.yml file, the input is set as: > inputs: > - domain: stream > dtype: complex > multiplicity: '3' > > The module compiles. However, when I run the QA file, it gives an error > stating something is wrong in File "..........blocks_swig1.py at line 8354. > TypeError: in method 'vector_source_c_make', argument 2 of type 'bool' > > I went to the file and the line stated, but I have not seen anything to > help me make corrections. As far as a TypeError of 'bool', I do not see > where I would have made such an error. I have an input parameter in the def > __init__(self, start = True) method, 'start', which comes in as bool, but > that is the only bool variable I am using. The documentation I read for the > method states "This block produces a stream of samples based on an input > vector" (which is my goal if I can get it to work). > > I will appreciate any help to get me on the right track. > > Regards, > George > >
