4x 1 Byte in float.?



  • HI Leute!

    Ich möchte eine float Variable vom µC an den PC schicken! Über die RS232 schicke ich jeweils ein byte -> also 4 x 1 byte ! Am PC erwartet ein Programm die Daten doch wie mache ich es das ich in eine Float die Werte richtig reinschreiben wenn 4x 1 byte kommt? also die bytes werden im µC nur immer um 8 stellen verschoben !

    Ich hoffe es versteht jemand was ich meine 🙂

    Frohe Weihnachten Leute :xmas1: und vielen Dank!


  • Mod

    Hallo

    verwende doch einfach ein union dafuer
    zB so
    union unFS { char sStr[4]; float fWert; } unWandl;

    in sStr schreibst du deine 4 Bytes rein in fWert steht dein float
    achten musst du auf den richtigen Reihenfolge der Bytes

    MfG
    Klaus



  • oder halt so:

    float f1 = 123456.789f;
    
      // float in 4 char umwandeln
      char  c1 = ((char*) &f1)[0];
      char  c2 = ((char*) &f1)[1];
      char  c3 = ((char*) &f1)[2];
      char  c4 = ((char*) &f1)[3];
    
      float f2;
    
      // und umgekehrt
      ((char*) &f2)[0] = c1;
      ((char*) &f2)[1] = c2;
      ((char*) &f2)[2] = c3;
      ((char*) &f2)[3] = c4;
    

Anmelden zum Antworten