Forum: Mikrocontroller und Digitale Elektronik byte-verfälschung


von Mark Tensen (Gast)


Lesenswert?

Hallo zusammen

Ich benötige wieder mal eure Hilfe!

Ich schicken mit einem c-programmcode 4 bytes über die 
RS232-Schnittstelle.
Hier ein Teil meines Codes:

FILE* Fd;
system("mode COM1: baud=19200 parity=n data=8 stop=1");
Fd = fopen("COM1:","w+");
fprintf(Fd,"%X%X%X%X",3,0,1,2);
fclose(Fd);

ich sende also 1. byte : 0x3, 2. byte : 0x0, 3. byte : 0x1, 4. byte : 
0x2

Wenn ich diese Bites dan am anderen Ende auslese erhalte ich die Bytes:
1. byte : 0x33, 2. byte : 0x30, 3. byte : 0x31, 4. byte : 0x32!

Kann mir das jemand weiterhelfen??

Gruss

Mark

von Justus S. (jussa)


Lesenswert?

Mark Tensen schrieb:

> ich sende also 1. byte : 0x3, 2. byte : 0x0, 3. byte : 0x1, 4. byte :
> 0x2

nö, tust du nicht. Überleg doch mal, was das fprintf macht...

von Klaus (Gast)


Lesenswert?

Na was rauskommt ist der hexwert von ASCII 3,0,1,2

0x33 = '3'
0x30 = '0'
0x31 = '1'
0x32 = '2'

probier mal fprintf(Fd,"%X%X%X%X",0x3,0x0,0x1,0x2);

K.

von P. S. (Gast)


Lesenswert?

Du wandelst die Zahlen in ihre (hexadezimale) ASCII-Repraesentation um. 
Lies mal nach, was printf tut.

von Hans (Gast)


Lesenswert?

Wird es damit klarer? :-)

-x-x-x-x- snip -x-x-x-x-
$ cat a.c
#include <stdio.h>

main()
{ printf("%2.2X %2X %2X %2X\n",3,0,1,2); }


$ ./a.out
03  0  1  2
-x-x-x-x-x-x-x-x-x-x-x-

-Hans

von Mark Tensen (Gast)


Lesenswert?

ich fange an mehr zu verstehen aer funktionieren tut es immer no nicht! 
bin halt noch ein anfänger!

von Hc Z. (mizch)


Lesenswert?

%X wandelt in lesbare Darstellung - das, was Du siehst.  Nimm %c.

von Mark Tensen (Gast)


Lesenswert?

herzlichen Dank an alles! Es funktioniert nun. %c war die richtige 
Antwort!

von Peter (Gast)


Lesenswert?

was soll dieser unsinn?
> system("mode COM1: baud=19200 parity=n data=8 stop=1");
man man schon in C Programmiert sollte man auch die funktionen verwenden 
um die schnittstelle umzukonfigurieren.

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.