Hallo! Ich möchte eine Floatvariable per RS232 (später RS485) senden. Ein Floatvariable enthält 4 Bytes Information. Wie kann ich (aus Codevision) auf diese einzelnen Bytes zugreifen, bzw. diese versenden. Als Asciizeichen will ich sie nicht senden, da ich hier mehr Speicher benötige. Kennt jemand ne Site, wie die Gleitkommazahl sich zusammensetzt (auf Bitebe) - also wie man es zurück rechnen kann? Danke Flite
Hi sowas macht man über eine union (es teilen sich dabei zwei Variablen den selben Speicher) union f_and_c { float f; unsigned char bytes_of_float[4]; }; f_and_c tst; tst.f=1.114; rs232_putc(tst.bytes_of_float[0]); rs232_putc(tst.bytes_of_float[1]); rs232_putc(tst.bytes_of_float[2]); rs232_putc(tst.bytes_of_float[3]); Matthias
Du kannst auch in ASCII senden: sprintf(buffer,"%f",f); und mit sscanf(buffer,"%f",&f); wieder lesen. Dauert halt länger. Dafür kannst mit mit einem Terminalprogramm mitschauen.
Danke für die Antworten! Mit der Union funktioniert es einwandfrei. Da noch mehr 'Traffic' auf den Bus kommt will ich möglichst unnötige Daten verwenden. Deshalb werde ich die 4 Bytes einzeln senden. Noch eine kleine Frage bezüglich des RX Interrupts in Codevision. Wie kann ich hier ein Byte empfangen? Ich finde in der Codevision hilfe nicht viel dazu ... Ich möchte nur ein Byte auslesen sofern eines verfügbar ist. Falls also noch nichts angekommen ist, soll er mit dem Hauptprogramm weitermachen - und nicht wie getchar warten, bis eines kommt ... Grüße Flite
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.