Pages: 1 ... 4 5 [6]   Go Down
Author Topic: Invio Byte per configurare OUTPUT sul server  (Read 2811 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusa Leo ero tornato un attimo anche sulla conversione da carattere ad array che mia avevi proposto tu immaginando che i due caratteri della
maschera siano chars[2] e chars[3] e la maschera è un array byte mask[8];

ho scritto questo codice probabilmente sbaglio sulla sottrazione però non so come fargli prendere il valore ASCII corrispondente... guarda posto il codice errato


Se devi isolare un range di valori, non importa che ti metta a fare una serie infinita di || (OR logici). Basta un paio di test con maggiore/uguale e minore/uguale. Inoltre ricorda che i char sono anche byte in memoria.
Quindi
Code:
if (chars[x] >='A' && chars[x] <='F') {
funziona come
Code:
if (chars[x] >= 65 && chars[x] <=70) {


ma chars
  • quindi vale anche come il corrispondente codice ASCII del carattere ad esempio chars
  • = 'A' vale appunto 'A' ma anche 65 giusto?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ma chars
  • quindi vale anche come il corrispondente codice ASCII del carattere ad esempio chars
  • = 'A' vale appunto 'A' ma anche 65 giusto?
Scusami ma, se dopo 6 pagine in cui te lo ripetuto specificato più volte, hai ancora dei dubbi circa il fatto che, usando i char, 'A' è equivalente a 65, allora comincio a disperarmi...  smiley-sweat
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma chars
  • quindi vale anche come il corrispondente codice ASCII del carattere ad esempio chars
  • = 'A' vale appunto 'A' ma anche 65 giusto?
Scusami ma, se dopo 6 pagine in cui te lo ripetuto specificato più volte, hai ancora dei dubbi circa il fatto che, usando i char, 'A' è equivalente a 65, allora comincio a disperarmi...  smiley-sweat

Dai era solo x sentirmelo dire un'altra volta smiley  smiley-mr-green
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22966
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ultima volta, però  smiley-wink
"un char ed un byte sono un modo diverso di rappresentare la stessa informazione"

Se in una cella di memoria hai il valore 65, se lo assegni ad una variabile di tipo "byte", 65 sarà 65.
Se lo assegni ad un char, esso sarà 'A' (che è il codice ASCII di 65) oppure 65, a seconda che lo tratti come carattere o come numero.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se il carattere è compreso fra '0' e '9', sottrai 48, se invece è compreso fra 'A' e 'F' sottrai 55.
Ricordati che l'ASCII di '0' è 48, quindi ad esempio 48-10=0 per cui '0' vale 0 appunto.
L'ASCII di 'A' è 65, sottraendo 55 hai 10, che è il suo valore in esadecimale.
Il valore ottenuto dalla prima cifra la moltiplichi per 16 e poi ci sommi il valore della seconda cifra.
Esempio:
D4
D=68  -->   68-55=13

4=52  -->  52-48 = 4
(13*16)+4=212


Hai così il tuo valore decimale. Adesso per estrarre i singoli bit usa la funzionre bitRead e popoli il tuo array.

Leo scusa ho provato a fare come dici tu: non so se ho capito male

Code:
byte MSK[8];

void convertiHEX(){
  int val1 = 0;
  int val2 = 0;
  int valore = 0;

  if ( CMD[2] >='A' && CMD[2] <='F' )    
    val1 = CMD[2] - 55;
  else
    if ( CMD[2] >= '0' && CMD[2] <= '9' )
    val1 = CMD[2] - 48;

  if ( CMD[3] >='A' && CMD[3] <='F' )    
    val2 = CMD[3] - 55;
  else
    if ( CMD[3] >= '0' && CMD[3] <= '9' )
    val2 = CMD[3] - 48;

  valore = (val1*16) + val2;
  Serial.println(valore);
  for ( int i = 0; i < 8 ; i++ ){
    MSK[i] = bitRead(valore,i);
    Serial.println(MSK[i]);
  }
}

su CMD[2] e CMD[3] ci sono i due caratteri esadecimali della maschera e MSK è un array a 8 posizioni dove va la maschera in binario
però non funziona
scusa Leo funziona
« Last Edit: March 04, 2013, 09:53:36 am by lollo1100 » Logged

Pages: 1 ... 4 5 [6]   Go Up
Jump to: