Hallo, möchte gerne im ATMega einen String empfangen, der so aussieht "4.123". Diese Zahl ( float) möchte ich weiterverarbetien. Es gibt aber keine String to float Umwandlung, oder? Was mache ich nun?
Ich könnte das auch übernehmen. Also, hier kommt er: Welche Programmiersprache benutzt du eigentlich?
Rolf Magnus wrote: > Ich könnte das auch übernehmen. Also, hier kommt er: > > Welche Programmiersprache benutzt du eigentlich? Danke, Rolf... ;-) Das 'b=val(a$)' ist BASIC und wandelt den String a$ in einen Wert (Value) um, der in der Variable b zurückgegeben wird. Angenommen, es handelt sich um einen AVR unter Assembler, dann würde ich so vorgehen: - Float vermeiden, da Integer bzw. Fixkomma meist reicht - Zeichen von UART per Interrupt empfangen und in Puffer ablegen - In Mainloop gelegentlich Puffer auf gültigen (abgeschlossenen) String prüfen - Falls String ok, dann Dezimalzeichen suchen, um Wertigkeit der Ziffern zu ermitteln - jede Ziffer mit ihrer Wertigkeit multiplizieren und Ergebnisse addieren ...
Ich würde dir auch empfehlen möglichst ohne float auszukommen, wenns trotzdem sein muss wäre eine hexdezimale Übertragung timing und speicherplatz technisch sicherlich am schnellsten/kleinsten. Wenn du es unbedingt als string übertragen musst entweder mit scanf oder selbst eine kleine routine schreiben die den string byteweise zerlegt und nen float draus berechnet
>Es gibt aber keine String to float Umwandlung, oder?
sprintf müsste funktionieren (ich bastel mir sowas gerne/lieber "zu
fuß"...).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.