Quantcast

saving internal (to a block) variable values to a file

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

saving internal (to a block) variable values to a file

Zing Yu
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.

_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

sumitstop
Are you talking about gr.file_sink() ?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

Zing Yu
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 <[hidden email]>
To: [hidden email]
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-a-block-variable-values-to-a-file-tp38118p38120.html
Sent from the GnuRadio mailing list archive at Nabble.com.

_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

sumitstop
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.  
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

Zing Yu
I first this question :)



From: sumitstop <[hidden email]>
To: [hidden email]
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-a-block-variable-values-to-a-file-tp38118p38123.html
Sent from the GnuRadio mailing list archive at Nabble.com.

_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

sumitstop
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 :)
       
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

Jose Torres Diaz
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 <[hidden email]> wrote:
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-a-block-variable-values-to-a-file-tp38118p38125.html
Sent from the GnuRadio mailing list archive at Nabble.com.

_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

Zing Yu
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 <[hidden email]>
To: sumitstop <[hidden email]>; [hidden email]
Cc: [hidden email]
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 <[hidden email]> wrote:
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-a-block-variable-values-to-a-file-tp38118p38125.html
Sent from the GnuRadio mailing list archive at Nabble.com.

_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio






_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: saving internal (to a block) variable values to a file

Sakib Chowdhury
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.


On Thu, Oct 25, 2012 at 2:01 PM, Zing Yu <[hidden email]> wrote:
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 <[hidden email]>
To: sumitstop <[hidden email]>; [hidden email]
Cc: [hidden email]
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 <[hidden email]> wrote:
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-a-block-variable-values-to-a-file-tp38118p38125.html
Sent from the GnuRadio mailing list archive at Nabble.com.

_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio






_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Loading...