discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Python block help


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Python block help
Date: Thu, 25 May 2017 23:22:42 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0

Hi Zach,

not sure the Python interface supports general blocks (ie. blocks where
the number of output items is not a multiple of the input items), I hope
someone else can comment; I'd recommend implementing this as a C++
block; the "Guided Tutorials" on http://tutorials.gnuradio.org should
prepare you to do that.

Best regards,

Marcus


On 25.05.2017 18:08, Zach Morris wrote:
> Hello Marcus,
>
> I realize this is a couple years later but I am attempting to do the same
> type of arbitrary ratio block, where samples above a threshold are passed
> and samples below that threshold are dropped. 
>
> When I tried to subclass gr.block (as below, and in  this tutorial from 2014
> <https://github.com/guruofquality/grextras/wiki/Blocks-Coding-Guide#arbitrary-ratio-block>
>  
> ) in an embedded Python block, GRC threw an error saying gr.block could not
> be found. Does this method still work, or is there an updated method with
> basic_block to implement arbitrary ratio blocks in Python?
>
> Greetings from Menlo Park, CA,
>
> Zach
>
>
>
> Marcus Müller-3 wrote
>> Hi Bob,
>>
>> I think you've introduced the "j" variable to keep count of how many
>> items you're going to produce, but then just tell the scheduler you've
>> produced as many items as he offered you to do. Replace
>>     self.produce(0,len(out0))
>> by
>>     self.produce(0,j).
>> Also, you consume ninput_items every for loop iteration, so
>> ninput_items^2 per work run. That's not right; do it only once, after
>> the loop.
>>
>> Greetings,
>>
>> Marcus
>>
>> On 12/24/2014 12:21 PM, bob wole wrote:
>>> Hi list,
>>>
>>> I am writing a custom python block that should take complex input,
>>> check magnitude of incoming samples and if the magnitude is greater
>>> than a threshold value, the block should pass that sample otherwise
>>> the block just drop the samples. As this is an arbitrary ratio block I
>>> derived it from gr.block and set_auto_consume(False).
>>>
>>> However I get intermittent zeros in output stream of my custom block.
>>> Below is the code
>>>
>>> from gnuradio import gr
>>> import gnuradio.extras
>>> import math
>>> import numpy as np
>>>
>>>
>>> class sdr_pass_valid(gr.block):
>>>     """
>>>     """
>>>     def __init__(self,threshold):
>>>         gr.block.__init__(
>>>             self,
>>>             name = "VALID",
>>>             in_sig = [np.complex64],
>>>             out_sig = [np.complex64],
>>>         )
>>>     self.set_auto_consume(False)
>>>
>>>     self.threshold =  threshold
>>>     def forecast (self,noutput_items,ninput_items_required):
>>>     for i in range(len(ninput_items_required)):
>>>         ninput_items_required[i] = noutput_items
>>>        
>>>     def work(self, input_items, output_items):
>>>
>>>         in0 = input_items[0][:len(output_items[0])]
>>>     out0= output_items[0]
>>>         nread = self.nitems_read(0) #number of items read on port 0
>>>         ninput_items = len(in0)
>>>     j=0
>>>     for i in range(0,ninput_items):
>>>         if np.absolute(in0[i]) >= self.threshold :
>>>             out0[j] = in0[i]
>>>             j = j + 1
>>>         self.consume(0,ninput_items)
>>>     self.produce(0,len(out0))
>>>         return 0
>>>
>>>
>>> --
>>> Bob
>>>
>>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing list
>>>
>> Discuss-gnuradio@
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> Discuss-gnuradio@
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>
>
>
> --
> View this message in context: 
> http://gnuradio.4.n7.nabble.com/Python-block-help-tp51706p64046.html
> Sent from the GnuRadio mailing list archive at Nabble.com.
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




reply via email to

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