discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] GrExtras - write blocks in python, message passin


From: Josh Blum
Subject: Re: [Discuss-gnuradio] GrExtras - write blocks in python, message passing, misc features...
Date: Wed, 06 Jun 2012 10:36:47 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1


On 06/06/2012 09:52 AM, Martin Braun wrote:
> On Sat, Jun 02, 2012 at 10:52:50AM -0700, Josh Blum wrote:
>> Most of the description is in the wiki page:
>> https://github.com/guruofquality/grextras/wiki
>>
>> And here is a handy coding guide for more detail:
>> https://github.com/guruofquality/grextras/wiki/Blocks-Coding-Guide
> 
> Hi Josh,
> 
> I'm not quite behind all of this yet. Here's two questions, if you could
> spare a minute:
> 
> First thing I tried was the Python blocks, and I wrote a random number
> generator (yep, I know that already exists, but I just wanted something
> simple to start with).
> Q: Why can't I assign arrays to output_items? See the code:
> 
> <snip>
> from gnuradio import gr
> import gnuradio.extras
> import numpy
> MAXRND = 1000
> 
> class rng_i(gr.block):
>     " random number generator "
>     def __init__(self):
>         gr.block.__init__(self, name="rng_i", in_sig=None, 
> out_sig=[numpy.int32])
> 
>     def work(self, input_items, output_items):
>         # Doesn't work:
>         #output_items[0] = numpy.array(numpy.random.randint(0, MAXRND, 
> len(output_items[0])), dtype=numpy.int32)[:]

I think I documented something about the numpy index operator, but maybe
I deleted it... have to check. Basically, use the indexing operator on
the left side of the assignment.

output_items[0][:] = numpy.array(numpy.random.randint(0, MAXRND,
len(output_items[0])), dtype=numpy.int32)

>         # Works:
>         for i in xrange(len(output_items[0])):
>             output_items[0][i] = numpy.random.randint(0, MAXRND)
>         return len(output_items[0])
> </snip>
> 
> I'm assuming it's something like copy vs. reference, but I thought I was
> doing everything right.
> 
> 
> Q: The first argument of post_msg, is this simply == the number of
> stream ports? Say I have one stream output and one msg output, do I
> always post to port 1?
> Reason I ask is you mention 'group indexes' and I'm not sure what that
> means.
> 

The group index refers to the index of the message source ports. This
would be zero for the 1st message source port. I should clarify that in
the docs... :-)

> Apart from that, I quite like your code and would like to lobby towards
> getting some of it into the mainline repository. Now I just have to come
> up with something useful to do with it :)
> 

Thanks for trying it out.
-josh



reply via email to

[Prev in Thread] Current Thread [Next in Thread]