|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools |
Rating:
|
Display Modes |
|
#1
|
||||
|
||||
|
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:
|
|
#2
|
||||
|
||||
|
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.). |
|
#3
|
||||
|
||||
|
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.
|
|
#4
|
||||
|
||||
|
Re: ofstream (standard C++ file output) not working
Quote:
I know about C IO, but like C++ much better due to its simplicity, and ease of use by semi-incompetent people |
|
#5
|
||||
|
||||
|
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.
|
|
#6
|
||||
|
||||
|
Re: ofstream (standard C++ file output) not working
if C style works, why would ofstream not work?
|
|
#7
|
|||||
|
|||||
|
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! |
|
#8
|
||||
|
||||
|
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) |
|
#9
|
||||
|
||||
|
Re: ofstream (standard C++ file output) not working
It's a great question, but I've never had any issues reading/writing to the robot using C file I/O, and I've never called Priv_SetWriteFileAllowed(1). I know my suggestion is more of a workaround than a real answer, but I just thought it might help.
|
|
#10
|
||||
|
||||
|
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... Last edited by karatekid : 10-01-2010 at 19:57. |
|
#11
|
||||
|
||||
|
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? |
|
#12
|
||||
|
||||
|
Re: ofstream (standard C++ file output) not working
Sorry?
|
|
#13
|
||||
|
||||
|
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. |
|
#14
|
|||||
|
|||||
|
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?
|
|
#15
|
||||
|
||||
|
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. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| p2 not working? | Lone_Wolf92c | Programming | 5 | 22-02-2008 08:49 |
| IR Board Not Working (But NOT Fried) | itsme | Electrical | 2 | 18-02-2008 06:11 |
| Beware - transmission output shaft is not 5/8"! | jskene | Kit & Additional Hardware | 30 | 13-02-2006 14:01 |
| Drive() Not a Standard Toolset in EasyC? | Chris_Elston | Programming | 3 | 08-02-2006 09:01 |
| Beware - transmission output shaft is not 5/8"! | jskene | Technical Discussion | 3 | 19-01-2006 14:24 |