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?