++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Serial Commands ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. include:: idBlock.rst :Dépôt BitBucket du code: https://bitbucket.org/myarduinotemplates/serialcommand :Création: 05/2024 .. _refSerialCommands: ==================================================================================================== Présentation ==================================================================================================== Il s'agit d'un petit interpréteur de commandes simple. Je l'ai découvert dans le cadre du projet jamais terminé : `Le petit train du VoLAB`_ .. _`Le petit train du VoLAB` : https://www.vorobotics.com/wiki/index.php?title=Le_petit_train_du_VoLAB Et plus particulièrement `DccPlusPlus`_ de Gregg E. Berman dont le site semble-t-il a disparu. On peut néanmoins citer le `projet DCC-EX`_ qui découle de ses travaux. **DCC++** n'est aujourd'hui plus maintenu. .. image:: images/dccExLogo.png :width: 200 px :target: https://dcc-ex.com/about/about.html#gsc.tab=0 .. _`projet DCC-EX` : https://dcc-ex.com/about/about.html#gsc.tab=0 .. _`DccPlusPlus` : https://github.com/DccPlusPlus J'ai utilisé cette base à maintes reprises dans mes projets car elle est simple à mettre en oeuvre... Elle consiste principalement en 2 fichiers : - SerialCommand.cpp - SerialCommand.h Auxquels, je me suis permis d'en ajouter un troisième *SerialCommandHelpMessages.h*. Un des derniers exemple de mise en oeuvre de ce modèle peut être trouvé sur le projet `BrasRobot avec interface WEB - travaux 2023`_ .. _`BrasRobot avec interface WEB - travaux 2023` : https://brasrobots2023.bitbucket.io/index.html C'est **ce** mini interpréteur de commande qui fait l'objet du présent article. ==================================================================================================== Mode d'emploi ==================================================================================================== Implémentation ---------------------------------------------------------------------------------------------------- Cet interpréteur est basé sur 3 fonctions static d'une structure en C: - init() - process() - parse() Comme il s'agit de méthodes statiques pas besoin d’instancier la structure. L'appel de ces méthodes se fait par SerialCommand::init(); et SerialCommand::process(); Même si 3 fonctions sont disponibles seules 2 sont à utiliser dans le code init et process. Parse qui est la fonction principale qui fait quasiment tout le boulot est appelée par process. Utilisation ---------------------------------------------------------------------------------------------------- Les commandes:: Elle sont constituées d'une seule lettre encadrée des caractères < >. Exemple : pour help. Ces commandes peuvent avoir des paramètres séparés pas des espaces. Dans le dépôt du code, j'ai laissé des exemples de commandes avec paramètres notamment la commande à 2 paramètres. ==================================================================================================== Weblinks ==================================================================================================== .. target-notes::