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:
codice:
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:
codice:
comando(128,0,127)
Però, stampando il risultato con il seguente codice:
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?