Forum: Compiler & IDEs UART


von Achim (Gast)


Lesenswert?

wie bekomme ich das hin dass ich über die udr schnittstelle auch
gleitkommazahlen senden kann?

von Karl H. (kbuchegg)


Lesenswert?

2 Möglichkeiten

* Einfach die Bytes so wie sie sind verschicken.

  Dazu ist eine union oft hilfreich

  union Convert
  {
    float Number;
    unsigned char Bytes[ sizeof float ];
  };

  void UART_Send_Float( float Number )
  {
     union Convert tmp;
     unsigned char i;

     tmp.Number = Number;
     for( i = 0; i < sizeof( float ); ++i )
       UART_Send_Byte( tmp.Bytes[i] );
  }

  Auf der Empfangsseite hast du dann das exakte Gegenstück:
  Entsprechend viele Bytes empfangen, in ein Array in einer
  union stecken und die Zahl aus der union abholen

* Verschick die Zahl in ihrer Textform. Dafür sind die Funktion
  sprintf, _ftoa, sscanf, atof hilfreich.

von Wolfram (Gast)


Lesenswert?

Möglichkeit 2 ist wesentlich sicherer da du dich nicht um LSB/MSB
kümmern musst. d.h. es funktioniert immer.

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.