This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Write data in file using "fopen( )" in C51 - µVision2

Hello everybody giving a helping hand,

got me some trouble here. I was making a program that reads out the duty cycle of an ADXL202 sensor. Everything works, except the part were i want to print my data in a file using this :

 FILE *stream, *fopen();

                 if ( (stream = fopen(...)) != NULL)
                                 fscanf(stream,''%s'', string);

Ok this is were my problems start. The compiler gives me the error that he doesn't know this type FILE ore the function fopen (). This seems to be logical to me since i looked in my stdio.h header and found nothing really according to that declaration.
Is there a posibility that this is stored in another source file or does not exist???
Or .... how do i get my data's in a *.txt file ???

Thanks for the help i'm about to receive :))

P.S: Im using a 80C535 µC, sorry for not mantuening

Parents
  • Well actualy my project includes reading an ADXL202 acceleration sensor and transcribe the messurments into a table (diagram), and i figured that would do great with excel. But with the normal Hyperterminal i must record the data into an *.txt file. And then transcribe into excel and then to the table etc....
    Help....

Reply
  • Well actualy my project includes reading an ADXL202 acceleration sensor and transcribe the messurments into a table (diagram), and i figured that would do great with excel. But with the normal Hyperterminal i must record the data into an *.txt file. And then transcribe into excel and then to the table etc....
    Help....

Children
  • "with the normal Hyperterminal i must record the data into an *.txt file. And then transcribe into excel and then to the table etc."

    Did you actually look at www.windmill.co.uk/rs232.html ?

    They have a lot of stuff about getting serial data into Excel...

  • "with the normal Hyperterminal i must record the data into an *.txt file. And then transcribe into excel and then to the table etc"

    If you won't put the effort into creating an automated application, then you're going to have to put effort into doing it manually, aren't you?

    Only you can say where the break-even point is...

    "Help..."

    Well, as you said yourself, "I'll bet that the www got something for me ..."

  • Yes i tried the free version and it seems its entirely bulls**t. And my pocket is a little bit tight for the new version, u know what i mean?? So i looked everywere but in the and i gotta stick to the old plan and use the hyperterm..... life's cruel, isn't it?? Sadly ironic.. does anybody have maybe an idee how this could work without special payments and extra work time ???

  • If your 8051 application is able to send data over the serial port, then have it insert a COMMA in between each bit of data and a LINEFEED at the end of each record. If you open such a csv (comma-separated-value) in any recent version of excel, it will know how to handle it.

  • "have it insert a COMMA in between each bit of data"

    That's "bit" as in "item" of data - not as in "binary digit"!

    "a LINEFEED at the end of each record."

    The line terminator for PC files should be a Carriage Return (CR) followed by a Linefeed (LF).
    This 2-character sequence is often known as "CRLF"

    eg, see: blogs.msdn.com/.../91899.aspx and follow the links...

    "If you open such a csv (comma-separated-value) [file] in any recent version of excel, it will know how to handle it."

    In fact, Excel's text-import wizard can cope with many formats - inlcuding fixed-width and lots of other delimiters.

    It's still a lot of manual messing about though: get Hypoterminal to capture the data, close the file, open the file in Excel, etc, etc, etc,...

    You can see how 2 weeks "lost" in writing a custom data receiver would soon be recovered!

  • Andy,

    Thanks for providing the OP with the clarifications. The rigor with which I craft my posts is directly proportional to the amount of caffeine I've managed to ingest so far that day. :)

    -Jay D.

  • Yes thank you but that is what im doin' right now. Its this thing that bothers me. I must record data, insert it in the excel file (with csv) and than do the table ( or diagram, or whatever you wanna call him ). If there is a posibility i would like to jump over these steps and make a direct connection to the serial port and transform the values directly into an diagram. That Windmill thing ain't working because it costs money witch i don't have and the free version is a joke. I heard it could be done with the macros in excel but i have no idea how to do this. If anybody has an idea or an webpage with the macro language or a done program it would be great....
    Thanks

  • Google for:

    serial wedge +excel

  • Have you looked into the user of ODBC with the Microsoft Text Driver (using text or csv files) to get the data into Excel?

  • I don't think the problem is in getting files into Excel - the problem is in getting serial data directly into Excel without having to mess about with intermediate files & capture utilities?

  • Exactly, thats well put.... files directly into excel without intermediate files and capture utilities etc...

    Any helpfull sugestion is more than welcome.... but without reward :)) sorry

  • I think you missed my point. I wasn't talking about getting files into Excel.

    To be more explicit:

    Have he checked if the M$ ODBC text driver can work directly on a text file, while the Hyperterminal is capturing data, i.e. can Excel do on-the-fly graphing while the data is still being being received?

    In that case, it wouldn't matter that the data is being stored somewhere - Excel do need the data somewhere to be able to graph it.

  • "I think you missed my point."

    Some of it, yes!

    "if the M$ ODBC text driver can work directly on a text file, while the Hyperterminal is capturing data"

    But this is still not serial data direct into Excel, is it?
    This still requires running Hypoterminal and setting it up to capture the data - the OP doesn't want to do that.

    I think Dan's suggestion of the "Serial Wedge" is probably the best - whether this is a physical Wedge that goes in the keyboard line (but might be too slow?) or a "Virtual" wedge that works straight from the COM port...

    Or perhaps the M$ ODBC text driver can handle the COM port as a "file"...?

  • Some HyperTerminal-like programs support DDE client/server operations. For example, I use Procomm Plus instead of HyperTerminal. Procomm Plus can be programmed as a DDE client to initiate a link to Excel and enter received data directly into Excel cells and send Excel commands.

  • I don't think the OP has a problem with running the HyperTerminal to capture the data. The main problem seems to be having the data getting stuck in a file and then needing a lot of manual - and repeated - work to get it further.

    I was thinking that it might be possible to run a capture in Hyperterminal (or just piping the data from the com port to a file) and then have Excel do a new read of the ODBC source whenever the user wants to see a current graph.