Datum:
Hi und hallo zusammen, ich versuche eine Float-Variable in einen String umzuwandeln, um diesen dann über UART auszugeben. Leider funktioniert das nicht so wie es soll. Wenn ich das wie folgt mache, erhalte ich nur ein Fragezeichen als Ergebnis, wenn ich mir die gesendeten Daten auf dem PC im Terminalprogramm anschaue.
char data[8]; sprintf(data, "%f", "3.125"); puts(data); |
Wenn ich eine Variable habe, in der z.B. 20,123 ; mit dem Debugger überprüft; drin steht und ich nun Folgendes schreibe, erhalte ich ebenfalls nur ein Fragezeichen als Ausgabe am PC:
float val; ..... sprintf(data, "%f", val); |
Jemand eine Idee, was ich da falsch mache? Jörg
Datum:
Jörg schrieb: > char data[8]; > > sprintf(data, "%f", "3.125"); > puts(data); printf("%f", 3.125);
Datum:
> nur ein Fragezeichen als Ergebnis
Kuckst Du Doku -> Linkeroptionen anpassen.
HTH
Datum:
Hallo, g457 schrieb: > Kuckst Du Doku -> Linkeroptionen anpassen. Ich habe jetzt Folgendes gemacht:
Unter Project Properties -> Toolchain -> AVR/GNU C- Linker -> Libraries in Libraries (-WI, -I), libprintf_flt.a und libm.a eintragen. dann unter Project Properties -> Toolchain -> AVR/GNU C- Linker -> Miscellaneous in Other Linker Flags, -Wl,-u,vfprintf eintragen |
Aus Beitrag Beitrag "Re: AVR Studio 5, sprintf, float und linken?" oder http://www.mikrocontroller.net/articles/FAQ#sprintf.28.29 Damit funktioniert es dann. Danke! Jörg