![]() |
ofstream (standard C++ file output) not working
I was testing a logging system, where you would be able to log data to a logfile on the cRIO, and then FTP to it to see what happened. I used a modified simpleRobot, and added a streambuf* to the variable list, a ofstream, initialized to "cRIOUserLog.log", and then rdbuf to clog. but clog<<"Logging Test"<<endl; (which should also flush) does not appear to do anything. I FTP'd to the cRIO, and looked in most of the directories, but I cannot find cRIOUserLog.log. Is there something I need to do? I remember someone somewhere in some thread somewhile ago saying something about a write flag, but I was able to use IMAQ_write_png (don't think this is the actual name) to write PNG's to the cRIO.
Relevant code: PHP Code:
|
Re: ofstream (standard C++ file output) not working
Try calling Priv_SetWriteFileAllowed(1) in the constructor.
I've never used ofstream on the cRIO, but I've gotten C-style file I/O to work (FILE*, fopen(), fwrite(), etc.). |
Re: ofstream (standard C++ file output) not working
Ditto. C-style has always run fine with me. If you know what you're doing it's not that hard to make a class similar to ofstream with c-style calls.
|
Re: ofstream (standard C++ file output) not working
Quote:
Quote:
|
Re: ofstream (standard C++ file output) not working
What I was saying is that if you can't get ofstream to work, write your own class that copies its behavior and use the C-style I/O in the member functions.
|
Re: ofstream (standard C++ file output) not working
Quote:
|
Re: ofstream (standard C++ file output) not working
The cRIO requires that you call Priv_SetWriteFileAllowed(1) before you can create files on the cRIO file system. You seem to be instantiating your ofstream object in the initialization list of your main robot class; in this case, the ofstream would attempt to create the specified file BEFORE you have allowed such an activity to take place (even if you call Priv_SetWriteFileAllowed(1) in your robot class's constructor - the initialization list gets executed first).
Also, ofstream has several methods that can be useful in diagnosing what has gone wrong. In particular, look at is_open(), good(), fail(), bad(), rdstate() here: http://www.cplusplus.com/reference/iostream/ofstream/ Hope this helps! |
Re: ofstream (standard C++ file output) not working
any files?
when we saved camera png's we did not have to call Priv_SetWriteFileAllowed(1) |
Re: ofstream (standard C++ file output) not working
Quote:
|
Re: ofstream (standard C++ file output) not working
I got this from cprogramming.com:
#include <fstream> #include <iostream> using namespace std; int main() { char str[10]; //Creates an instance of ofstream, and opens example.txt ofstream a_file ( "example.txt" ); // Outputs to example.txt through a_file a_file<<"This text will now be inside of example.txt"; // Close the file stream explicitly a_file.close(); //Opens for reading the file ifstream b_file ( "example.txt" ); //Reads one string from the file b_file>> str; //Should output 'this' cout<< str <<"\n"; // b_file is closed implicitly here } This is how it is done in c++, for both input and output-this may not help, because I do not know how it will work with the robot, put it works for regular programs. Also, this only works for text files to my knowledge... |
Re: ofstream (standard C++ file output) not working
karatekid, I don't think you know what this thread is about. I know how to use o/i/fstream, but cannot find the file it (supposedly)creates. This format (should) work for the robot, as well as any other target supporting C++ io. And it works for binary fills also
Another thought: would I have to use /myfile instead of just myfile? |
Re: ofstream (standard C++ file output) not working
Sorry?
|
Re: ofstream (standard C++ file output) not working
Any luck so far or is it still not working?
Also, I don't remember needing a forward slash in front of the filename when saving. |
Re: ofstream (standard C++ file output) not working
In Java, I recall I had to use a "file://" prefix on my filename (for example: "file://mylog.txt") in order to get file creation to work. Perhaps you have to do the same thing here?
|
Re: ofstream (standard C++ file output) not working
Haven't tried to do it yet, yesterday we we only able to get LV/WR/NB installed. I think I might be able to test it Thursday, but definitely by Saturday.
Interesting Jared341, I will try this. |
| All times are GMT -5. The time now is 14:23. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi