discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Integrate block outputting inconsistent results.


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Integrate block outputting inconsistent results.
Date: Fri, 20 Dec 2013 08:13:14 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Miguel,
don't shame yourself too much. We all make mistakes.

It could be that B can't open the file it wants to write, because the
file_sink of A still has it open. After the A.stop() have an A.wait()
and an A = None. The wait call should let your program wait until all
blocks are finished and no samples are left stuck in the flowgraph
somewhere.
The None-assignment should cause Python to deconstruct A, causing Swig
to call the destructor of the C++ blocks and thus in turn should close
the file_sink's file. Sadly, Python is a modern language/runtime and
has lazy garbage collection. So in some cases, it might happen that
python decides that it should clean up later instead of instantly at
the A=None; then we still have a problem.
To solve that, you might overload your top_block's stop() method,
making sure that it calls miguels_file_sink.close() after stopping the
flowgraph:

class detector(grc_wxgui.top_block):
        ...
        def stop(self):
                grc_wxgui.top_block.stop(self)
                self.miguels_file_sink.close()

Hopefully, that helps.

Greetings,
Marcus

On 20.12.2013 00:10, Miguel Duarte wrote:
> I hope this doesn't start a new thread. I wanted to answer on my
> thread but I didn't get my own message on my inbox so.. I hope it
> works.
> 
> 
> I ended up getting what was wrong, and I feel ashamed on so many
> levels, I'm sorry. I was using complex data. Damn.
> 
> Anyway, after changing everything, it all works as expected. So I
> delved a little into what was causing my troubles initially.
> 
> It seems that my top block class "refuses" to be instanced twice,
> with two different identifiers.
> 
> So let's say I have a
> 
> 
> class detector(grc_wxgui.top_block_gui) def __init__(self,
> options):
> 
> Where I start an instance A with a certain set of options and an
> instance B with other options.
> 
> I do: A = detector(options) A.start() time.sleep(x) A.stop()
> 
> change options
> 
> B = detector(options) B.start() time.sleep(x) B.stop()
> 
> I have a file sink in the flow graph. With instance A it writes
> everything, with instance B it doesn't. Nothing is changing the top
> block, and even with the options parameter switched only A works.
> 
> Is there something in this new release which prevents this from
> working?
> 
> Thanks in advance,
> 
> Miguel.
> 
> 
> 
> _______________________________________________ Discuss-gnuradio
> mailing list address@hidden 
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.15 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJSs+4KAAoJEAFxB7BbsDrLfgcH/1QG+/txz1x2/pUPxSB3IPOX
CMnpeRcX1k+wKkRzRjeSuuptwfGOjyaODmbzEHhKsmjLAFkgTcr1IMFogiRN6JqV
r1II7UKZQR4+49lHQ2luwLRM7S3hffsssWUQfJ29GsymXPwHN9s6cOtYVn/DxUZo
WQeI1KT06Vhf9stIDW8Cm30J9QAqtR4Jnuop+/0yR+FhO6rbcTTQLApNf0RcOpLQ
Mb22D3nxCZa3I6GOCWEDISbSfEFXYmBqpMp/zF7rskct2bdpsw0g7E5YKAiNJSrX
NJL3mEMxCghNLYxvKlZF0kZf4JREFVqbcUqZKtJQHoX2aQOjwggjdDBGl9fXMAs=
=ea9W
-----END PGP SIGNATURE-----



reply via email to

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