Forum: GNU Radio saving internal (to a block) variable values to a file

8a43c7f4857005bb38344f794132106f?d=identicon&s=25 Zing Yu (Guest)
on 2012-10-23 19:04
(Received via mailing list)
All,

I have a custom block and some internal variables within it. I want to
save one (or more) of those variables into a file for offline plotting.
I know there are gnuradio examples which does this. Can someone point me
where to look at?

Thanks,
Yu.
62c6afe77dc83ea1bbb16ff0b2a5a88d?d=identicon&s=25 sumitstop (Guest)
on 2012-10-23 21:33
(Received via mailing list)
Are you talking about gr.file_sink() ?



--
View this message in context:
http://gnuradio.4.n7.nabble.com/saving-internal-to...
Sent from the GnuRadio mailing list archive at Nabble.com.
8a43c7f4857005bb38344f794132106f?d=identicon&s=25 Zing Yu (Guest)
on 2012-10-23 21:57
(Received via mailing list)
No. I have written work function for a custom block. Inside that work
function, I have a local variable "temp" which updates very less
frequently. Since the output of the block updates at a different
(higher) rate, I can't pull out temp to make it an output. How should I
go about saving the values of temp?




________________________________
 From: sumitstop <sumit.kumar@research.iiit.ac.in>
To: Discuss-gnuradio@gnu.org
Sent: Tuesday, October 23, 2012 2:32 PM
Subject: Re: [Discuss-gnuradio] saving internal (to a block) variable
values to a file

Are you talking about gr.file_sink() ?



--
View this message in context:
http://gnuradio.4.n7.nabble.com/saving-internal-to...
Sent from the GnuRadio mailing list archive at Nabble.com.
62c6afe77dc83ea1bbb16ff0b2a5a88d?d=identicon&s=25 sumitstop (Guest)
on 2012-10-23 22:24
(Received via mailing list)
Although I have not done that much work on work() so far but out of
curiosity
am asking : can't we write temp to some file , inside the block of
work()
itself so we need not to make it as output.



--
View this message in context:
http://gnuradio.4.n7.nabble.com/saving-internal-to...
Sent from the GnuRadio mailing list archive at Nabble.com.
8a43c7f4857005bb38344f794132106f?d=identicon&s=25 Zing Yu (Guest)
on 2012-10-23 22:32
(Received via mailing list)
I first this question :)




________________________________
 From: sumitstop <sumit.kumar@research.iiit.ac.in>
To: Discuss-gnuradio@gnu.org
Sent: Tuesday, October 23, 2012 3:23 PM
Subject: Re: [Discuss-gnuradio] saving internal (to a block) variable
values to a file

Although I have not done that much work on work() so far but out of
curiosity
am asking : can't we write temp to some file , inside the block of
work()
itself so we need not to make it as output.



--
View this message in context:
http://gnuradio.4.n7.nabble.com/saving-internal-to...
Sent from the GnuRadio mailing list archive at Nabble.com.
62c6afe77dc83ea1bbb16ff0b2a5a88d?d=identicon&s=25 sumitstop (Guest)
on 2012-10-23 23:10
(Received via mailing list)
Well I am pretty sure that your query is more complicated than what I am
thinking, but I did the following just to check. Inside the work
function of
howto_square_ff.cc

I pasted following lines

  ofstream outdata;
  int i; // loop index
        int num[5] = {4, 3, 6, 7, 12}; // list of output values
  outdata.open("/home/sumit/example2.dat");
  for (i=0; i<5; ++i)
        outdata << num[i] << std::endl;
        outdata.close();

compiled it ...

And I got them written in example2.dat

Anyways I am curious to see if you get some effective reply :)





--
View this message in context:
http://gnuradio.4.n7.nabble.com/saving-internal-to...
Sent from the GnuRadio mailing list archive at Nabble.com.
76bee707f8e48e46186b09ec0369c6e9?d=identicon&s=25 Jose Torres Diaz (Guest)
on 2012-10-24 02:02
(Received via mailing list)
Hi,

Also I'm saving some variables into a file. What I did:

Before the work function:

myfile.open ("/home/Desktop/examples/variables_from_block");

Then, inside the work function:

myfile << _msg.key; //Save the variable value
myfile << std::flush;

I've found that I have to std::flush the file, because if I close it
(myfile.close()), I cannot access the file anymore and the variable is
saved once only.

Hope this helps,

Cheers,

Jose

On Wed, Oct 24, 2012 at 7:37 AM, sumitstop
8a43c7f4857005bb38344f794132106f?d=identicon&s=25 Zing Yu (Guest)
on 2012-10-25 20:02
(Received via mailing list)
All,

Just for future reference, below is the summary of what I did:

In my .cc file:

Added these lines at the top:
using namespace std;
#include <fstream>
#include <iostream>

std::ofstream myfileobj;

Added this line into my constructor definition:
myfileobj.open("/home/temp-values.txt");

Added this line into my work function:
myfileobj<< temp << std::endl; // temp is a float variable


Finally, added this line into my destructor definition:
myfileobj.close();


Now, the only issue I am having is that if I save my file as .dat and
then use read_float_binary to read the values then it gives me garbage
values instead of actual ones. Moreover, the file size is larger than
expected, i.e., number of items is more than expected, and the item size
is 8 bytes instead of 4 bytes (for float).

Nevertheless, I can live with using the .txt file for now and will work
on using .dat later. Meanwhile, if someone finds some obvious mistake in
my approach, please let me know.

Thanks Sumit and Jose.




________________________________
 From: Jose Torres Diaz <torresdiaz.jose@gmail.com>
To: sumitstop <sumit.kumar@research.iiit.ac.in>; zing.yu@yahoo.com
Cc: Discuss-gnuradio@gnu.org
Sent: Tuesday, October 23, 2012 7:01 PM
Subject: Re: [Discuss-gnuradio] saving internal (to a block) variable
values to a file


Hi,

Also I'm saving some variables into a file. What I did:

Before the work function:

myfile.open ("/home/Desktop/examples/variables_from_block");

Then, inside the work function:

myfile << _msg.key; //Save the variable value
myfile << std::flush;

I've found that I have to std::flush the file, because if I close it
(myfile.close()), I cannot access the file anymore and the variable is
saved once only.

Hope this helps,

Cheers,

Jose


On Wed, Oct 24, 2012 at 7:37 AM, sumitstop
<sumit.kumar@research.iiit.ac.in> wrote:

Well I am pretty sure that your query is more complicated than what I am
Ccc164ece57f7a9402202a233236ffb4?d=identicon&s=25 Sakib Chowdhury (Guest)
on 2012-10-25 21:54
(Received via mailing list)
You have to open the file in "binary" mode to write binary data,
otherwise
it is in text mode by default. Doesn't matter what the extension is -
txt
or dat or anything else - what matters is how you are opening the file
in
fstream::open.

Hope that helps.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.