- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: int wert in 4 bytes aufteilen--> geht das überhaupt?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42

    int wert in 4 bytes aufteilen--> geht das überhaupt?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute!

    Ich möchte gern für die serielle übertragung, einen int wert, der ungefähr die größe 50000 hat in 4 Bytes aufteilen und dann an ein programm das ein kollege von mit mit java programmiert hat senden. bis jetzt hab ich nur Acsi zeichen senden können. habs mit tera term ausprobiert.
    hab den programmcode von mir hinzugefügt. mit einem atmega16 und einem stk-board gehts.

    hat vl jemand eine idee?

    Mfg
    Kati
    Angehängte Dateien Angehängte Dateien

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wie auch immer:
    Code:
    union {
    int    iInt;
    char bCh[4];
    } mixed;
    
    // Laden 
    for (iX=0;iX<4;iX++)
    mixed.bCh[iX] = inputcharacter;
    
    //Arbeiten
    mixed.iInt = 324 * 68405;   // z.B.
    
    // Export
    for (iX=0;iX<4;iX++)
     outut =  mixed.bCh[iX];
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42
    naja, mit dem kann i leider nix anfangen...
    zumindest versteh i des net mal..
    aber trotzdem danke

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Na, ich versuch's mal:
    das, was in Union definiert wird, also das "int" und das "char [4]" , steht (wegen "UNIT") an der selben Speicheradresse.
    d.h. die gleichen 4 bytes sind einmal ein 32-Bit integer, und einmal 4 einzelne Bytes.
    daher kannst du durch die angabe mixit.iInt ein Integer bearbeiten und durch die Angabe mixit.bCh[n] eines der vier Bytes.
    Besser ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42
    danke für die antwort...
    is der code auch codevision avr?

    mfg

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    "UNION" is ganz einfach normal-C . das sollte jeder können.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Ort
    Untersöchering(Bayern,Alpenvorland)
    Alter
    37
    Beiträge
    215
    Würde es auch so gehen?

    unsigned char buffer[5];
    unsigned char int wert;
    sprintf(buffer,"%u",&wert);
    usart_puts(buffer);

    Gruß Muraad

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Klar, wenn du aus "wert" einen string machst, geht das.
    Nur ist halt der "sprintf" ein ziemliches Massaker für den Computer. Man sieht es dem Befehl halt nicht an.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Ort
    Untersöchering(Bayern,Alpenvorland)
    Alter
    37
    Beiträge
    215
    Was ist den an sprintf() so schlimm?
    Außer das es Bufferoverflow gefährdet ist.
    Gruß Muraad

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Die Arbeit liegt im Format-String ("%u") . Er muß zur Laufzeit diesen Ascii-String interpretieren und in deinem Fall letztlich die Binärzahl ins dezimalsystem bringen. Das erfordert schon das eine oder das andere Statement.
    Mach dir den Spaß und programmier' das mal aus, da staunt der Laie und der Fachmann lächelt.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress