Forum: Mikrocontroller und Digitale Elektronik Serielles Kommunikation, Parsen von Double


von Honkey H. (honkeys)


Lesenswert?

Hallo kann mir vielleicht jemand einen Denkansatz geben oder einen 
Beispielcode wie man mit dem AVR- GCC ein serielle Eingabe realisiert, 
welche so ähnlich aussieht wie die SCPI- Syntax, das Parsen bereitet mir 
Kopfzerbrechen und das Wandeln der empfangenen Zahlen in Double git es 
da irgendeine Funktion für?

von Karl H. (kbuchegg)


Lesenswert?

Honkey Honk wrote:
> SCPI- Syntax

sagt mir jetzt nichts.

> das Parsen bereitet mir
> Kopfzerbrechen

Je nachdem wie die SCPI Syntax aussieht, kann das von
simplen Tabellen bis zu Techniken aus dem Compilerbau reichen.
Grundlage ist aber praktisch immer:
Die empfangenen Zeichen in einem String sammeln.
Den String danach in einzelne Wörter zerlegen.
Anhand der erkannten Wörter weitermachen.

> und das Wandeln der empfangenen Zahlen in Double git es
> da irgendeine Funktion für?

strtod( ... )
findest du in jeder C-Doku

von I_ H. (i_h)


Lesenswert?

Double kannst du ähnlich wie int parsen. Erst sammelst du alle Ziffern 
ein (für jede Ziffer double*10+ziffer), danach setzt du das Komma 
(Dezimalpunkt suchen, Position merken, schauen ob hinten noch E+/-x 
steht, wenn ja draufrechnen, dann *10^).

cstdlib kann man nehmen, wenn man verstanden hat wie es funktioniert. 
Wobei die Lib auf'm Mikrocontroller doch etwas overkill ist.

von Karl H. (kbuchegg)


Lesenswert?

I_ H. wrote:

> cstdlib kann man nehmen, wenn man verstanden hat wie es funktioniert.
> Wobei die Lib auf'm Mikrocontroller doch etwas overkill ist.

Ich habs jetzt nicht ausprobiert, würde aber nicht erwarten,
dass ein strtod noch massig anderes Zeugs aus der Standard Lib
nach sich zieht.

Wenn man selbst was schreibt: Auf die Behandlung der Vorzeichen
nicht vergessen!

von Honkey H. (honkeys)


Lesenswert?

Ja dann würde ich wohl zum selbstschreiben tendieren, wird denke ich 
wohl das einfachste und effektivste sein...
Danke für die Unterstützung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.