Bonsoir,
Je souhaiterais un coup de mains sur un bout de code de ma création, pour commencer, je ne suis pas informaticien, mais uniquement bidouilleur... et ça se voit...
void verifie_encapsulation()
{
// module servant à séparer les informations à envoyer pour commander une action
// le "mot" global est dans "recept" et il doit comporter "[" + adresse interrupteur + "," + groupe? (0/1) + "," + ON/OFF (0/1) + "," + recipient + "]"
char add_inter[10]; // adresse de l'interrupteur
char groupe[1] ; // commande de groupe ?
char on_off[1] ; // allumage ou extinction
char recip[3] ; // récipient
int boucle = 0 ; // indice de boucle
int en_cours = 0; // valeur du caractère en cours
while (boucle <50)
{
if (recept[boucle] == 91) // si la valeur de l'octet = "["
{
boucle +=1 ;
int boucle2 = 0 ;
while (recept[boucle] != 44) //tant que pas réception d'une ","
{
add_inter[0+boucle2] = recept[boucle] ; //met la valeur de l'octet trouvé dans "add_inter"
boucle += 1 ;
boucle2 += 1 ;
}
add_inter[0+boucle2]='\0';
boucle +=1 ;
groupe[0] = recept[boucle];
groupe[1]='\0';
boucle +=1 ;
if (recept[boucle] != 44)
{
Serial.println ("erreur dans l'envoi1");
recept[0] = '\0';
return;
}
boucle += 1;
on_off[0] = recept[boucle];
on_off[1] = '\0';
boucle += 1;
if (recept[boucle] != 44)
{
Serial.println ("erreur dans l'envoi");
recept[0] = '\0';
return;
}
boucle += 1;
boucle2 = 0;
while (recept[boucle] != 93) //tant que pas réception d'une "]"
{
recip[0+boucle2] = recept[boucle] ; //met la valeur de l'octet trouvé dans "recip"
boucle += 1 ;
boucle2 += 1 ;
}
recip[0+boucle2] = '\0';
Serial.print ("adresse inter : ");
Serial.println (add_inter);
Serial.print ("groupe : ");
Serial.println (groupe);
Serial.print ("on_off : ");
Serial.println (on_off);
Serial.print ("recipient : ");
Serial.println (recip);
recept[0] = '\0';
return;
}
boucle += 1;
}
}
en résumé, je reçois une info venant de mon PC sous une forme indiquée en REM ci dessus.
Mon problème réside dans les char... j'ai beau lire une tonne de docs, je n'arrive pas à élucider le mistère du "*" indiquant l'adresse du char ou sa valeur.
Dans le cas ci dessus, mes informations "groupe" et "on-off" sont fausses au moment où elles arrivent au serial.print, alors qu'elles sont bonnes au moment de la ligne de chargement de valeur.
Si j'écris par contre : Serial.print (*groupe), je retrouve la bonne valeur, mais je me doute que la formulation n'est pas bonne...
Alors si un "sachant" pouvait me filer un coup de mains....
Merci d'avance,