char *packet ="2 8 255 1 0 0 0 0 0 0 0";
const char delimiters[] = " ";
uint8_t solenoide;
uint8_t modeLED;
uint8_t brightnessLED;
void setup() {
int counterSplit = 1;
int value;
Serial.begin(115200);
//premier appel avec la chaine à traiter, il peut y avoir plusieurs delemiteur.
char* token = strtok(packet, delimiters);
//si un des caractéres recherché a été trouvé, token ne sera pas null et pointera sur le premier caractére
//de la sous chaine, le caractére recherhcé est remplacé par le caractére \0, qui est utilisé pour indiqué la fin d'une chaine string C-style
while(token != NULL) {
Serial.print("token: ");Serial.println(token);
//le switch-case permet de savoir à quel element on est (solenoide, modeLED, puissance lumineuse, ...)
//cela est gére avec la variable counterSplit qui contient le numéro de l'element à traiter.
switch(counterSplit){
case 1:
//cas du solenoide
//cet instruction ne sert pas vraiment car le while protége d'avoir a ce moment un token à null.
//mais il est bon de se rapeler quand on traiter des pointeur, de vérifier que l'on ne passe pas null à une fonction.
if (token == NULL) break;
//transforme une chaine de caractére contenant un entier en entier, la fonction renvoyant un entier de type (int, 16 ou 32 bits suivant l'arduino)
//on passe par une variable temporaire, pour vérifier que la donnée est correcte.
value = atoi(token);
if (value >= 0 && value < 256) {
//affectation de la premiére donnée transmise à la variable solenoide.
solenoide = (uint8_t)value;
Serial.print("solenoide = ");Serial.println(solenoide);
} else {
Serial.print("L'element envoye pour solenoide n'est pas un entier 8bits!");Serial.println(value);
}
break;
case 2:
if (token == NULL) break;
value = atoi(token);
if (value >= 0 && value < 256) {
modeLED = (uint8_t)value;
Serial.print("solenoide = ");Serial.println(modeLED);
} else {
Serial.print("L'element envoye pour modeLED n'est pas un entier 8bits!");Serial.println(value);
}
break;
case 3:
if (token == NULL) break;
value = atoi(token);
if (value >= 0 && value < 256) {
brightnessLED = (uint8_t)value;
Serial.print("solenoide = ");Serial.println(brightnessLED);
} else {
Serial.print("L'element envoye pour brightnessLED n'est pas un entier 8bits!");Serial.println(value);
}
break;
default:
Serial.print(token);Serial.print(" pour l'element ");Serial.print(counterSplit);Serial.println(" non traité!");
break;
}
counterSplit++;
token = strtok(NULL, delimiters);
}
}
void loop() {
// put your main code here, to run repeatedly:
}