write ist wahllos

08/03/2010 - 10:38 von Curtis Newton | Report spam
Hallo,

ich habe ein Device an der seriellen Schnisstelle, zu dem ich mit write
was sende (Fehlerbehandlung mal weggelassen):

int f;
f = open("/dev/ttyS0", O_RDWR);

unsigned char c[2];
c[0]=1;
c[1]=2;
write(f, c, 2);

Was mich erstaunt, dass ich write(f, c, 2); oder write(f, &c, 2);
schreiben kann - beide male funktionierts - das Geràt zeigt die richtige
Reaktion.

Wie das denn? c ist doch ein Pointer auf ein Array auf char, &c ein
Pointer auf Pointer auf Array auf char. Oder nicht?

C.

Bye
 

Lesen sie die antworten

#1 Jochen Lübbers
08/03/2010 - 10:49 | Warnen spam
Curtis Newton schrieb:
[...]
Was mich erstaunt, dass ich write(f, c, 2); oder write(f, &c, 2);
schreiben kann - beide male funktionierts - das Geràt zeigt die richtige
Reaktion.



Was heißt "das Geràt zeigt die richtige Reaktion" für Dich?

Der write()-Befehl, so wie Du ihn einsetzt, schreibt genau zwei
Byte. Wenn er die von der angegebenen Adresse (bei Dir "c" oder "&c")
lesen kann ist er auf dieser Seite zufrieden. Wenn er dann noch beide
Bytes ohne Probleme wegschicken kann (auf den File-Descriptor "f"), dann
ist für den Schreibbefehl alles in Butter.

Die spannende Frage ist, ob Du auch die richtigen Daten sendest...

Wenn Du nun aber statt zwei Byte 200 sendest, was passiert dann?

HTH
Jochen
"Wer die Freiheit aufgibt, um Sicherheit zu gewinnen,
der wird am Ende beides verlieren"

Ähnliche fragen