Étape 5: Personnalisation de la coque
Pour ajouter vos propres commandes personnalisées, procédez comme suit :
1. Ajoutez votre commande à la liste d’analyse
L’analyseur de commande va analyser la ligne de commande et vous donner la commande et des arguments séparément. Les arguments sont passés en tant que pointeurs de pointeurs, ou un tableau de pointeurs, comme bon vous semble travailler avec eux. Cela se trouve dans shell.cpp. Ouvrez shell.cpp et recherchez la méthode ExecCmd de la classe AVRShell.
Vous pouvez ajouter la commande à mémoire programmable. Si vous le faites, ajoutez la commande dans progmem.h et progmem.cpp. Vous pouvez ajouter la commande à mémoire programmable directement en utilisant la macro PSTR(), mais vous allez générer un autre avertissement du type de celles mentionnées plus tôt. Encore une fois, il s’agit d’un bug connu avec C++, mais vous pouvez contourner cela en ajoutant la commande directement dans les fichiers de progmem.*, comme je l’ai fait. Si vous ne me dérange pas ajouter à votre utilisation SRAM, vous pouvez ajouter la commande que j’ai illustré avec la commande « horloge ».
Dire que vous souhaitiez ajouter une nouvelle commande appelée « newcmd. » Allez à AVRShell::ExecCmd et trouver un endroit commode pour insérer le code suivant :
Cela va ajouter à votre commande et appelez la méthode cmdNewCmd que vous écrirez à l’étape suivante.
2. Tapez votre code de commande personnalisée
Dans le même fichier, ajoutez votre code de commande personnalisée. Il s’agit de la définition de méthode. Vous voudrez encore ajouter la déclaration shell.h. Ajoutez-la juste pour les autres commandes. Dans l’exemple précédent, le code pourrait ressembler à ceci :
Il y a plusieurs choses ici. Tout d’abord, « chamois » est un tampon de 40 caractères tableau prévu par le code pour votre utilisation. Nous utilisons la version de mémoire de programme de sprintf, puisque nous sommes en lui passant un PSTR. Vous pouvez utiliser la version régulière si vous le souhaitez, mais assurez-vous que vous ne transmettez pas le format en un PSTR. En outre, les arguments sont dans le tableau args. Si vous avez tapé « newcmd arg1 arg2 », vous pouvez obtenir ces arguments args [0] et les indices d’args [1]. Vous pouvez passer un maximum d’arguments MAX_ARGS, tel que défini dans le code. N’hésitez pas à changer cette valeur lorsque vous recompilez si vous avez besoin de beaucoup plus d’arguments à passer à la fois.
Le WriteLine et WriteRAM sont des fonctions globales qui retournent des méthodes de l’UART du même nom. Le 2e argument de cette fonction est implicit. Si vous passez rien, une invite de commande sera écrit par la suite. Si yo passez un 0 comme le 2e argument, une invite de commandes n’est pas écrites. Cela est utile lorsque vous souhaitez écrire plusieurs chaînes séparées à la sortie avant que la ligne de commande est retournée à l’utilisateur.
3. demandez à l’interpréteur de commandes exécuter le code de commande
Vous avez déjà dit l’exécuteur de shell à exécuter la méthode cmdNewCmd lorsque vous configurer la nouvelle commande, mais il ajoutez le fichier shell.h qu’elle soit comprise par l’objet shell. Ajouter juste au-dessous de la dernière commande ou en face de la première commande ou n’importe où dedans là.
Et c’est tout. Recompile et télécharger le firmware de votre Arduino et votre nouvelle commande est disponible de la coquille à l’invite de commandes.