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:
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)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; }
A questo punto ho provato a utilizzare la funzione comando con i seguenti valori:
Però, stampando il risultato con il seguente codice:codice:comando(128,0,127)
Ecco cosa risulta: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]);
1: -128
2: 0
3: 127
4: 127
Qualcuno sa spiegarmi dove sbaglio?

Rispondi quotando
Che pirla! 
