PDA

Visualizza la versione completa : [C] Inviare pacchetto di byte via seriale (su Linux Embedded)


ana4ever-vids
23-08-2009, 13:06
Ciao a tutti,

essendo un novellino nel campo, probabilmente la soluzione al mio problema sarÓ banale, ma le ho provate tutte (o quasi) e ancora non ne sono venuto a capo. Premessa: lavoro su una linux embedded.

Devo costruire un pacchetto di 4 byte da inviare ad una seriale. Ecco come costruisco il pacchetto:

int comando(char indir, char comm, char vel) {

char chk = (indir+comm+vel) & 0x7f;

char cmd[4] = {indir, comm, vel, chk};

if(write(tty_desc, cmd, 4) < 0) {
return -1; //ERRORE NELL'INVIO DEL COMANDO
}

return 0;
}

L'ultimo byte Ŕ dato dalla somma dei primi tre. A questa somma viene poi applicata una maschera (01111111 = 127 = 0x7f). (spero che sia corretta l'applicazione della maschera)

A questo punto ho provato a utilizzare la funzione comando con i seguenti valori:

comando(128,0,127)

Per˛, stampando il risultato con il seguente codice:

printf("\n1: %i\n",cmd[0]);
printf("2: %i\n",cmd[1]);
printf("3: %i\n",cmd[2]);
printf("4: %i\n\n",cmd[3]);

Ecco cosa risulta:

1: -128
2: 0
3: 127
4: 127



Qualcuno sa spiegarmi dove sbaglio?

codesnippet
23-08-2009, 17:40
PerchŔ un char contiene valori da -128 a 127. Un unsigned char da 0 a 255.

ana4ever-vids
23-08-2009, 20:34
:nonlodire Che pirla! :madai!?:

Grazie!!!

Loading