mon projet avance mais de nouveau je bloque et j'ai besoin de vos lumiéres....
le PB : je lis un DHT22 relié à un wemos ESP12 qui est configuré "serveur".
je réalise un objet String qui contient toutes les infos du DHT et autre.
Depuis un second wemos en "client" , j'envoie un requete à mon serveur et reçoit en retour le String contenant toutes mes info:
la mise en forme est :
"Temp 21.5 / Hum 65 / Relai 1 "
je veux récupérer "21.5", mais ça pourrait bien être "24.45"
et ensuite le "65", le "1", et d'autre viendront se rajouter...
comment est ce que je peut faire sachant que la longueur de la chaine varie?
j'ai vu les fonctions charAt, startsWith(), endWith(), strtok
comment dois je m'y prendre?
je peux changer la mise en forme du string de départ si des balise type et sont plus facilement reconnaissable, peut être découper la chaine ?
le 'char c' sert à capturer le caractère '/'. sscanf utilise l'espace comme séparateurs de champ. Un champ un %bidule.
Remarques :
le %f (f:float) n'est pas intégré par défaut (pour des raisons de place de code) dans le sscanf de bibliothèque arduino. Il faut utiliser un %s (s:string) puis faire par exemple un atof sur la capture.
Il est possible de placer une '*' après le % pour ne pas mémoriser la capture.
il est possible d'utiliser la valeur de retour de sscanf pour verifier le bon nombre de champs mémorisés (bon format de la ligne à scanner).
si la chaine à parser est dans une String il faut donner à sscanf sa représentation "chaîne de caractères à la C" obtenue facilement avec la méthode c_str(). Exemple :
le '*' après le % implique juste que tu n'as pas besoin de donner l'adresse d'une variable "poubelle" lorsque tu n'es pas intéressé par la valeur scannée (économie mémoire).
Pas plus d'erreur par la suite que dans les autres cas