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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Partager