L’objectif
A chaque fois que je devais lire des données sur la liaison série, cela était source d’erreurs, de confusions. Bref, à chaque fois, du temps perdu et des difficultés pour bien traiter le message reçu.
Comme je n’ai pas trouvé la bibliothèque que je voulais, je l’ai donc créé.
L’objectif est de récupérer et de traiter des messages comme les exemples suivantes :
– « Help »
– « d »
– « Red 255 »
La partie avant un éventuel espace sera le mot clé. La deuxième partie, si elle existe, sera converti en un entier.
La classe StringSerial
//------------------------------------------------- // Classe SerialString //------------------------------------------------- class SerialString { public: SerialString(); void renew(); String get(); boolean empty(); boolean equals(String str); boolean withParameter(); int parameter(); boolean isSensoduino(); private: String _message; //the whole message String _keyword; // the first part (before ' ') };
La chaîne _message contient tout le message entré en minuscules.
La chaîne _keyword contient le mot clé, la première partie du message, celle avant un éventuel espace (en minuscules).
En début de programme
//------------------------------------------------------------ // Librairies //------------------------------------------------------------ // pour le traitement du message recu sur la liaison serie #include <SerialDLF.h> //------------------------------------------------------------ // Constantes //------------------------------------------------------------ // Classe de SerialDLF SerialString messageRecu;
La boucle principale
//------------------------------------------------------------ // Loop //------------------------------------------------------------ void loop() { messageRecu.renew(); // on lit un eventuel message. if (messageRecu.empty()==false) // Si le message est non vide ... { Serial.println(messageRecu.get()); traitement(); Serial.flush(); } } //fin loop
Les méthodes
– renew() : met à jour l’instance en lisant les données sur la liaison série.
– get() : renvoiele mot clé.
– empty() : teste si le message est vide.
– equals(String str) : teste si le mot clé est égale à la chaîne str, sans tenir comte de la classe.
– withParameter() : teste si le message initial contient un paramètre.
– parameter() : renvoie le paramètre entier.
Des exemples complets d’utilisation
– Mesure de température avec le capteur LM35
– Mesure de température, pression et altitude avec le capteur BMP085
– Contrôle d’une led RGB
Téléchargement
https://filedn.com/lpKG7uY9hIHVel5exA5Ik80/Wordpress/Num%C3%A9rique/Arduino/SerialDLF.zip