String mit Zahl in exp-Schreibweise für LCD wandeln

Gast #304830
Lesenswert?

Hallo!

Ich bekomme von einem Messgerät per RS232 z.B. den String
"-1.25010000E-05" und muss diesen nun als 'lesbaren' Wert auf ein
Display bringen. Im obrigen Beispiel wäre dies z.B. "0.000", da die
Zahl (gemessene Spannung) vernachlässigbar klein ist.

Wie könnte ich sowas realisieren?

Meine Idee:
1. Stringende mit \0 kennzeichnen
2. String mittels strtol() in ein double verwandeln
3. Das double mittels sprintf in eine formatierte ASCII-Ausgabe
bringen
4. Wert ausgeben

Würde das funktionieren?
Wie müsste die sprintf-Bezeichner lauten?
Würde das ganze weniger Speicherintensiv auch gehen?

Bin für Tipps dankbar!

Gruß,
Techniker
Gast #304832
Lesenswert?

Ich habe gerade folgendes ausprobiert:

double val;
unsigned char test[64];

val = 1.2552;
sprintf(test,"% .3f\r\n",val);

uart_puts(test);

Als Ergebnis erhalte ich am PC: '?<CR><NL>'

Was hat dieses Fragezeichen zu bedeuten? :-/
#304836
Lesenswert?

Wie wär's denn, wenn du anhand des Exponenten das Komma der Basis so
verschiebst, dass der Exponent durch 3 teilbar ist und die Basis >0 und
<1000 ist? Dann kannst du die Ziffernfolge der Basis ohne Rechnerei
übernehmen (mit verschobenem Dezimalkomma) und anhand des Exponenten
einen Einheiten-Vorsatz auswählen.

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren