[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re: Update QT GUI Label from Embedded Python Block
From: |
Phil Wiggum |
Subject: |
Re: Re: Update QT GUI Label from Embedded Python Block |
Date: |
Thu, 8 Jul 2021 21:05:35 +0200 |
I sort of got this peak detecting working.
Expect one problem which I will address in a separate thread....
> Sent: Thursday, July 08, 2021 at 2:44 PM
> From: "Phil Wiggum" <p1mail2015@mail.com>
> To: discuss-gnuradio@gnu.org
> Subject: Re: Update QT GUI Label from Embedded Python Block
>
> Hi Marcus,
>
> I solved my Label issue with a 'Python Snippet' as follows:
> Properties of Python Snippet:
> - Section of Flowgraph: Main - After Init
> - Code Snipet: self.epy_block_0.set_parent(self)
>
> And in my 'Python Block' added set_parent function.
> 'Python Block' code:
>
> class blk(gr.sync_block):
> def __init__(self ):
> gr.sync_block.__init__( self, name='Embedded Python Block',
> in_sig=[np.float32], out_sig=None )
>
> def set_parent(self,parent):
> self.parent=parent
> self.parent._label_label.setText("10MHz") #label updated here
>
> def work(self, inp, out):
> return 0
>
> Now about my blocks and the my real problem I'm try solve in Gnuradio!
> I would like to detect a peak frequency in a FFT plot and show that frequency
> value in my QT GUI Label.
> So far I done following:
>
> SDR -> Frequency Xlating FIR Filter (Decimation:1,
> Taps:firdes.low_pass(2,smprate,bw,bw/5,6), Center:100K, Sample Rate:5M) ->
> Rational Resampler (Interpol:100k, Decimat: 5M, Taps: Fract BW: 0) *-> QT GUI
> Frequency Sink.
>
> That works nice and I get visible peak frequency.
>
> And now my attempt to get the value of that peak frequency into my GUI Label.
> *-> Log ower FFT -> Max -> Python Block
>
> I don't get particular far. The python code seems to produce overruns and
> can't keep up with the amount of data.
> Is it right to say that all 'work' functions in all blocks are called
> synchronously even if no data has changed.
>
> Do you have any suggestion of blocks that I should use for detecting the FFT
> peak frequency?
>
> /Thanks
> Phil
>
>
> > Hi Phil,
> >
> > can't do that! The label can only be changed by calling setters in Python
> > that
> > are not in
> > the namespace you (directly) have access to in your block (you can hack
> > together things
> > where you just hard-code the top_block's name, but uhggggh ugliness).
> >
> > Also, sounds like the right job, but the wrong tool. Your block seems to be
> > something like
> > a decimator, i.e. it takes in N samples and produces 1 value. Is that right?
> >
> > Best regards,
> > Marcsu
> >
>