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];
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
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.
naja, mit dem kann i leider nix anfangen...
zumindest versteh i des net mal..
aber trotzdem danke
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.
danke für die antwort...
is der code auch codevision avr?
mfg
"UNION" is ganz einfach normal-C . das sollte jeder können.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Würde es auch so gehen?
unsigned char buffer[5];
unsigned char int wert;
sprintf(buffer,"%u",&wert);
usart_puts(buffer);
Gruß Muraad
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.
Was ist den an sprintf() so schlimm?
Außer das es Bufferoverflow gefährdet ist.
Gruß Muraad
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.
Lesezeichen