Go Down

Topic: Conversione string to byte (Read 2 times) previous topic - next topic

lesto


Semmai era così !!


non vedo alcuna differenza (a parte una parentesi).
Invece sono sbagliati gli indici!
Code: [Select]

//attenzione usare solo lettere masiuscole, non c'è controllo dell'input
byte a =0;
stringa [4] = '0xB0';
if (stringa[2] >= '0' && stringa[2] <= '9'){ //estraggo 'B'
   a = stringa[2] - '0';
}else{
   a = stringa[2] - 'A';
}
a = a << 4; //muovo il valore di 4 bit a sinistra
if (stringa[3] >= '0' && stringa[3] <= '9'){  //estraggo '1'
   a += stringa[3] - '0';
}else{
   a += stringa[3] - 'A';
}
Serial.write (byte);
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

m.alverman

Hai ragione per gli indici ma avevi messo
al posto di a hai messo byte

la funzione è questa

Code: [Select]

byte strConv(String str)
{
//attenzione usare solo lettere masiuscole, non c'è controllo dell'input
byte a =0;
stringa [4] = str;
if (stringa[2] >= '0' && stringa[2] <= '9'){ //estraggo 'B'
   a = stringa[2] - '0';
}else{
   a = stringa[2] - 'A';
}
a = a << 4; //muovo il valore di 4 bit a sinistra
if (stringa[3] >= '0' && stringa[3] <= '9'){  //estraggo '1'
   a += stringa[3] - '0';
}else{
   a += stringa[3] - 'A';
}
return str;
}


sto provando ad usarla

lesto

yep hai ragione!  :smiley-roll-sweat:

non ritorni str (cioè la stringa), ma a (cioè il byte)

infatti
Serial.write (byte);
avresti dovuto cambiarla in
Serial.write (a);
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

m.alverman

Come si fa a far andare questo sputo di codice
Ero riuscito ma con tutte le prove che ho fatto mi sono incasinato tra i vari ide e non riesco più a farlo andare ....... (bestemmione)

char inByte;
char data;
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available()>0)
  {
    inByte = Serial.read();
    data = inByte;
    Serial.print (strConv(data));   
  }
}

byte strConv(String str)
{
byte a =0;
String stringa[4] = str;
if (stringa[2] >= '0' && stringa[2] <= '9'){ //estraggo 'B'
   a = stringa[2] - '0';
}else{
   a = stringa[2] - 'A';
}
a = a << 4; //muovo il valore di 4 bit a sinistra
if (stringa[3] >= '0' && stringa[3] <= '9'){  //estraggo '1'
   a += stringa[3] - '0';
}else{
   a += stringa[3] - 'A';
}
return a;
}

m.alverman

@Lesto

Il codice che mi hai consigliato non funziona.
Prova a testarlo se vuoi
Code: [Select]

char inByte;
char data;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available()>0)
  {
    Serial.print (strConv('0x00'),DEC);
  }
}

byte strConv(String str)
{
byte a =0;
if (str[2] >= '0' && str[2] <= '9'){ //estraggo 'B'
   a = str[2] - '0';
}else{
   a = str[2] - 'A';
}
a = a << 4; //muovo il valore di 4 bit a sinistra
if (str[3] >= '0' && str[3] <= '9'){  //estraggo '1'
   a += str[3] - '0';
}else{
   a += str[3] - 'A';
}
return a;
}

Go Up