Bonjour Romain26
Tout ça dépend aussi de quelle façon tu reçoit ces données.
Première constatation sur ton programme, les données que tu envoies n'ont pas de fin.
Effet_hall 223Pression_relative 221Difference_de_pression 222Effet_hall....
Donc impossible de séparer les variables. Il faudrait mettre un caractère "Nouvelle ligne" en fin de chaque variable.
1 2 3
| envoi.print("Effet_hall ");
envoi.print(analogRead(effet_hall));
envoi.print("\n"); |
Effet_hall 286
Pression_relative 283
Difference_de_pression 282
Effet_h...
Ainsi, à la réception on peut attendre la fin d'une variable avec
String variableRecue = Serial.<a href="https://www.arduino.cc/en/Serial/ReadStringUntil" target="_blank">readStringUntil</a>('\n');
et variableRecue vaut Effet_hall 286.
On recherche le séparateur (espace) avec
int sepPosition = variableRecue.indexOf(" ");
qui donne 10
On extrait le nom de la valeur avec
String nomValeurRecue = variableRecue.substring(0, sepPosition); // Depuis le début jusqu'au séparateur
On extrait la variable avec
String valeurRecueStr = variableRecue.substring(sepPosition+1); // Depuis après le séparateur
qu'on transforme en valeur nunérique avec
int valeurRecueInt = valeurRecueStr.toInt();
Maintenant, on peut se poser la question, est-il utile d'envoyer le nom des variables avec les valeurs comme Effet_hall 286, avec le nom, on ne peut pas faire grand chose si ce n'est l'afficher. Autant indexer (numéroter) ces variables et envoyer
1=286
2=283
3=...
Avec = comme séparateur, ainsi on gagne en concision au niveau des communications et à l'autre bout on attribue
Si nomValeurRecue == "1"
int effetHall = valeurRecueInt
etc...
Cordialement
jpbbricole
Partager