Bonjour,
Je recupère une variable qui semble etre tout en DEC
Si je print ceci
Serial.println((char *)ma_var);
Il m'affiche un résultat convainquant.
Ceci étant dit, je dois parcourir un par un ma variable ma_var.
for(byte co=0; co < strlen((char *)comm_buf);co++)
{
Serial.println(ma_var[co])
}
La, il m'affiche plein de valeur DEC. J'ai regardé le tableau ASCII et ca correspond bien à ce que j'attends.
Donc jusqu'à la ca me va.
Par contre, si je remplace
Serial.println(ma_var[co])
par
Serial.println((char *)ma_var[co])
là, il m'affiche n'importe quoi.
Donc j'ai essayé
char * l;
l = (char *)comm_buf[co];
Serial.println(l);
Idem!!!
Comment je veux donc convertir ceci
comm_buf[co];
en char, ou le mettre dans une variable de type char?
kamill
October 16, 2015, 6:34pm
2
Bonjour,
Tu ne donnes pas pas le type de comm_buf, mais si on suppose que c'est une table d'octets, il suffit de convertir les octets en char
char car=(char)comm_buf[co];
Au fait c'est quoi un DEC ??
Salut Kamil,
Ecuse moi. DEC=décimal
Alors j'ai essayé plusieur truc
char caracter = (char *)comm_buf[co];
Serial.println(caracter);
Là, j'ai un message d'erreur
error: invalid conversion from 'char*' to 'char' [-fpermissive]
char caracter = (char *)comm_buf[co];
Ca affiche toujours les valeur décimal, du genr
J'ai aussi essayé
char caracter[2]; //declaring character array
sprintf(caracter,"%d",comm_buf[co]);
Serial.println(caracter);
là, ca m'affiche toujours les valeur décimal.
Si j'ai 49, je dois avoir le caractere 1
Si j'ai 65, je dois avoir le caracter A
etc
Alors il semble que comme ceci, ca fonvtionne
char caracter[2]; //declaring character array
sprintf(caracter,"%c",comm_buf[co]);
Serial.println(caracter);
mais pas encore trop sûre
J'arrive toujours pas résoudre mon problème et ca me casse le pied.
initialement, dans comm_buff, j'ai que je souhaite traiter, mais tout est en décimal et j'aimerais avoir des caracteres, à la place.
Si je fais ca
for(byte co=0; co < strlen((char *)comm_buf);co++)
{
char caracter[2]; //declaring character array
sprintf(caracter,"%c",comm_buf[co]);
Serial.println(caracter);
}
Ca affiche bien, mes carcateres, comme je le souhaite.
Mais si maintenant j'essaye de remplace la valeur décimal par son caracteres, comme ceci
for(byte co=0; co < strlen((char *)comm_buf);co++)
{
char caracter[2]; //declaring character array
sprintf(caracter,"%c",comm_buf[co]);
Serial.print(F("c1:"));
Serial.println(caracter);
comm_buf[co] = caracter[0];
Serial.print(F("c2:"));
Serial.println(comm_buf[co]);
}
Ca m'affiche ceci:
c1 = c'est juste
c2 = c'est denouveau la valeur décimal
c1:1
c2:49
c1:,
c2:44
c1:"
c2:34
c1:+
c2:43
c1:4
c2:52
c1:1
c2:49
c1:7
c2:55
c1:6
c2:54
c1:3
c2:51
c1:4
c2:52
c1:3
c2:51
c1:5
c2:53
c1:2
c2:50
c1:0
c2:48
c1:6
c2:54
c1:"
c2:34
c1:,
Je dois très mal mis prendre!!!! mais j'aimerais travailler avec des caracteres, mais pas avec des décimals!!!!
kamill
October 16, 2015, 8:14pm
6
Je ne comprends pas tes essais.
Tu n'as toujours pas dit de quel type est comm_buf. Si c'est une suite d'octets terminée par 0, il suffit de la convertir en char *
Serial.println((char *) comm_buf)
fifi82
October 16, 2015, 8:21pm
7
oui si tu fait
comm_buf[co] = caracter[0];
comm_buf[] c'est un tableau type int apparemment et tu lui écrit avec un type char donc tu récupère le code ascii