Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Problemi con valori

    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?
    Earn money for searching the internet:
    Homepages Friends

  2. #2
    Perchè un char contiene valori da -128 a 127. Un unsigned char da 0 a 255.

  3. #3
    Che pirla!

    Grazie!!!
    Earn money for searching the internet:
    Homepages Friends

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.