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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.