Writing numeric data to an SD card
simonl
Posts: 866
Hi,
Last night I finally hooked-up an SD card to my PChip - GREAT WORK ROCKIKI
Using rockiki's excellent code I easily managed to write strings to a file, but I'm having trouble getting my head round writing numerics
Here's the latest version of my code (if you run it,; you'll probably need to change the XTAL settings ;-)
As you can see I'm using pwrite - giving it the ToStr string and 4 bytes - but it's not writing as I'd hoped (see below)...
[code]
1
Last night I finally hooked-up an SD card to my PChip - GREAT WORK ROCKIKI
Using rockiki's excellent code I easily managed to write strings to a file, but I'm having trouble getting my head round writing numerics
Here's the latest version of my code (if you run it,; you'll probably need to change the XTAL settings ;-)
CON ' _clkmode = xtal1 + pll16x ' _xinfreq = 5_000_000 _clkmode = xtal2 + pll8x _xinfreq = 10_000_000 obj ' term: "tv_text" term : "PC_text" sdfat : "fsrw" Num : "Numbers" var byte tbuf[noparse][[/noparse]20] pub go | x num.init x := \start term.str(string("Returned from start : ")) term.dec(x) term.out(13) waitcnt(1000 + cnt) reboot pub start | status, sta, bytes, lcnt, Temp term.start(12) term.str(string("Mounting.", 13)) sdfat.mount(0) term.str(string("Mounted.", 13)) term.str(string("===============================", 13)) term.out(13) { --- WRITE THE FILE ------------------------------- } status := sdfat.popen(string("data.csv"), "w") term.str(string("Opening returned : ")) term.dec(status) term.out(13) sta := cnt bytes := 0 lcnt := 1 Temp := 1 repeat 10 sdfat.pwrite(Num.ToStr(lcnt, Num#DEC), 4) sdfat.pputc(string(",")) waitcnt(1000 + cnt) sdfat.pwrite(Num.ToStr(Temp, Num#IHEX), 4) sdfat.pputc(string(",")) waitcnt(1000 + cnt) sdfat.pwrite(Num.ToStr(Temp, Num#DEC), 4) sdfat.pputc(13) waitcnt(1000 + cnt) Temp := Temp + 2 lcnt++ term.str(string("Data written.", 13)) waitcnt(1000 + cnt) sdfat.pclose term.str(string("File closed.", 13)) { --- READ IT BACK --------------------------------- } status := sdfat.popen(string("data.csv"), "r") if status == 0 term.str(string(13, "========", 13, "Opening returned : ")) term.dec(status) term.out(13) repeat status := sdfat.pgetc if status < 0 quit term.out(status) term.str(string("FILE READ OK.", 13, "========", 13, 13)) else term.str(string("Opening file FAILED with : ")) term.dec(status) term.out(13) term.str(string("That's, all, folks!", 13))
As you can see I'm using pwrite - giving it the ToStr string and 4 bytes - but it's not writing as I'd hoped (see below)...
[code]
1
Comments
you have to pass a character and not a string in method pputc.
Thomas
Many thanks Kaio
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
www.norfolkhelicopterclub.co.uk
You'll always have as many take-offs as landings, the trick is to be sure you can take-off again ;-)
BTW: I type as I'm thinking, so please don't take any offense at my writing style