Comprendre les "String" et "char" utilisées dans des tableaux…
Bonjour,
voila j'ai créé une boucle qui récupère une chaine de caractères dans une liaison UART.
J'essaie de filtrer les éléments mais voila j'ai des lacunes en C/C++ aussi, je vous soumets le sketch qui fonctionne, mais je ne comprends pas pourquoi...
voici plus de précision :
pour que ce sketch fonctionne j'ai rajouté cette ligne de code :"String chaine=String(tableau[a]);" or je n'utilise pas la variable "chaine".
Je crois que le problème vient d'une incompréhension sur l'utilisation des "String " et "char", je vous laisse juges et attends vos remarques et explications avec tous mes remerciements.
si vous avez des ouvrages à me conseiller je suis preneur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
int i=0, a=0, b=0;
void setup()
{
Serial.begin(9600);
delay (1000);
}
void loop()
{
char data[]="CO2_ON=1;CO2_OFF=1;heureActuelle=(0, 0, 2);DEPART=(0, 0);ARRET=(23, 30)";
//String chaine=String(data);
char *tableau[4]; /* on pointe le contenu de l'adresse de chaque ligne du tableau*/
if (b < 4)
{
for (a=0; a<=4; a++)
{
if (a > 0)
{
tableau[a]=strtok(0,";"); /*découpage de la chaine au niveau des points virgules*/
} /* */
else /* chaque ligne du tableau */
{ /* */
tableau[a]=strtok(data,";"); /* contient un bout de la chaine */
}
String chaine=String(tableau[a]);
char buff[16];
sprintf(buff, "tableau[%d]= %s", a, tableau[a]);
Serial.println(buff);
b++;
}
}
} |
PS : le résultat attendu est bien le suivant :
tableau[0]= CO2_ON=1
tableau[1]= CO2_OFF=1
tableau[2]= heureActuelle=(0, 0, 2)
tableau[3]= DEPART=(0, 0)
tableau[4]= ARRET=(23, 30)