AVRSH : Une interface d’interprète de commande pour Arduino/AVR. (5 / 6 étapes)

Étape 5: Personnalisation de la coque

Vous êtes libre de pirater le code et le personnaliser à vos besoins, si vous le souhaitez. Si j’avais su que je voudrais libérer ce code, j’aurais fait une classe d’interprète de commande séparé et la structure de commandement et simplement parcouru cet appelant un pointeur fonction. Elle permettrait de réduire la quantité de code, mais telle qu’elle est la coquille analyse la ligne de commande et appelle la méthode appropriée de shell.

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.

Articles Liés

Cubecube : Une Interface Tangible CAD.

Cubecube : Une Interface Tangible CAD.

Cubecube - un projet open source hardware - est une interface tactile tangible pour la CAO (conception assistée par ordinateur.) Design open source plateformes continuent d'émerger, il est l'occasion d'explorer de nouvelles possibilités dans la façon
Début microcontrôleurs partie 2: Création d’une Interface SPI du programmateur au microcontrôleur

Début microcontrôleurs partie 2: Création d’une Interface SPI du programmateur au microcontrôleur

Bonjour, nous espérons que vous avez apprécié la partie 1 de début de microcontrôleurs. Nous allons avancer dans la partie 2 et de commencer à parler sur les interfaces et comment obtenir votre microcontrôleur pour communiquer avec un ordinateur.Donc
PC sous contrôle Robot Bluetooth (avec une interface graphique utilisateur!)

PC sous contrôle Robot Bluetooth (avec une interface graphique utilisateur!)

Dans ce Instructable je vais vous montrer comment construire un robot qui est contrôlé par l'intermédiaire de Bluetooth à l'aide d'un clavier, dispose d'une interface utilisateur graphique construite avec traitement qui affiche l'entrée au clavier et
Enregistrer les Codes infrarouges de n’importe quelle unité de télécommande pour une utilisation avec Linux Infrared Remote Control (LIRC) sur le récepteur infrarouge GPIO à partir de framboise Pi

Enregistrer les Codes infrarouges de n’importe quelle unité de télécommande pour une utilisation avec Linux Infrared Remote Control (LIRC) sur le récepteur infrarouge GPIO à partir de framboise Pi

IntroductionLes commandes sont orphelins lorsque l'appareil qu'ils contrôlent a cessé de fonctionner sont réutilisables sur votre facture pro forma de framboise. Après avoir terminé ce instructable, vous pouvez être intéressé à essayer les instructab
ATTiny USI I2C Introduction - une interface de communication puissant, rapide et pratique pour vos projets ATTiny !

ATTiny USI I2C Introduction - une interface de communication puissant, rapide et pratique pour vos projets ATTiny !

I2C, il s'agit d'une norme qui existe depuis environ 20 ans et a trouvé des utilisations dans presque tous les coins de l'univers électronique.  C'est une technologie incroyablement utile pour nous amateurs de microcontrôleur mais peut sembler intimi
TapTunes - une Interface Tap à iTunes

TapTunes - une Interface Tap à iTunes

dans le cadre de mon projet à terme Human-Computer Interaction, je fouette un petit programme qui permettrait aux utilisateurs de contrôler iTunes en cliquant sur les différents modèles sur un capteur piézoélectrique.  La base de ce projet était le K
Créer une fenêtre d’invite de commandes la voie facile.

Créer une fenêtre d’invite de commandes la voie facile.

je sais que cela a été fait avant, mais ma version est un tout petit peu différenteBon, si vous voulez essayer quelques trucs cool invite de commande, mais vous n'arrivez pas à trouver comment ouvrir réellement invite de commande. (Ce serait le cas d
Chauffage avec VSCP et une interface web de la maison

Chauffage avec VSCP et une interface web de la maison

Mes parents sont retraités et vivent dans le sud de la France. Chauffer pendant l'été, mais il peut aussi être froid en hiver.Ils utilisent pour voyager pendant plusieurs semaines au cours de l'hiver pour visiter des amis et famille, et qu'ils chauff
Lecture/émuler télécommandes avec Arduino et Raspberry Pi

Lecture/émuler télécommandes avec Arduino et Raspberry Pi

Télécommandes sont partout. Ils sont l'interface à vos téléviseurs, systèmes de musique et de ce-pas. Vous avez probablement quelques unes de rechange traînent, dévasté à la disparition de leurs moitiés de mieux. Leur remonter le moral et les remettr
Une approche avancée de programmation Arduino & AVR

Une approche avancée de programmation Arduino & AVR

Cette instructable est un must read pour tous ceux qui sont familiers avec cœur AVR chips et Arduino.Eh bien, pour être plus précis, à la lecture de l'instructable, vous serez en mesure de :1) connaître la bonne différence entre AVR et Arduino.2) pro
L’interface LCD (16 X 2) pour arduino

L’interface LCD (16 X 2) pour arduino

Cette instructables vous explique au sujet de l'interface LCD (cristaux liquides Dispaly) 16 X 2 pour arduino.Certains Points au sujet de l'écran LCD de base:-Écran LCD se compose de 16 lignes et 2 colonnes de 5 × 7 ou 5 × 8 LCD dot matrices.LCD est
Energino : une consommation d’énergie axée sur l’Arduino surveillance bouclier

Energino : une consommation d’énergie axée sur l’Arduino surveillance bouclier

Energino est un compteur de prise-charge qui mesure la quantité d'énergie consommée par tout appareil électrique DC est branché sur son. Il a été conçu pour surveiller la consommation d'énergie des périphériques réseau simples tels que des commutateu
DIY télécommande pour Hexdrake

DIY télécommande pour Hexdrake

Bonjour, je suis David et c'est mon deuxième instructable:).C'est une continuation de mon premier instructable, où je vous montre comment j'ai construit mon petit hexapode, Hexdrake :Dans ce nouveau instructable je vais vous montrer comment j'ai fait
Transformer une N64 Controller une manette de jeu USB en utilisant un Arduino Leonardo

Transformer une N64 Controller une manette de jeu USB en utilisant un Arduino Leonardo

Pour transformer une manette de jeu USB de controleur de la N64, la méthode la plus simple consiste à acheter un N64 Controller Adapter pour environ £15. Cependant il peut aussi être fait si vous avez un Arduino Leonardo ou tout autre carte Arduino a