mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Float senden


Autor: Flite (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Flite (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.