AVRSH: Een tolk opdrachtshell voor Arduino/AVR. (5 / 6 stap)

Stap 5: Aanpassen van de Shell


u bent vrij om te kappen op de code en aanpassen aan uw eigen behoeften, als je wilt. Als ik had geweten dat zou ik deze code vrijgeven, zou ik heb gemaakt van een aparte opdracht tolk klasse en de commandostructuur en gewoon via deze roepen een functiepointer herhaald. Het zou verminderen de hoeveelheid code, maar zoals het nu voorligt de shell de opdrachtregel geparseerd en de juiste shell methode aanroept.

Als u wilt toevoegen in uw eigen aangepaste opdrachten, door het volgende te doen:

1. uw opdracht toevoegen aan de lijst parse
De opdracht parser zal ontleden van de opdrachtregel en geven u de opdracht en eventuele argumenten afzonderlijk. De argumenten worden doorgegeven als aanwijzers pointers, of een serie van wijzers, hoe u willen werken met hen. Dit komt voor in shell.cpp. Open shell.cpp en vinden de ExecCmd-methode van de klasse AVRShell.

Kunt u desgewenst de opdracht toevoegen aan programmageheugen. Als u dit doet, wordt de opdracht toevoegen in progmem.h en progmem.cpp. U kunt de opdracht toevoegen aan programmageheugen direct met behulp van de PSTR()-macro, maar genereert u nog een waarschuwing van het type eerder vermeld. Nogmaals, dit is een bekende bug werken met C++, maar u kunt krijgen rond dit door toevoeging van de opdracht rechtstreeks in de progmem.*-bestanden, zoals ik heb gedaan. Als je het niet erg toe te voegen aan uw SRAM gebruik, kunt u de opdracht zoals ik hebben geïllustreerd met het commando "klok".

Zeggen dat u willen toevoegen een nieuw commando genaamd "newcmd." Ga naar AVRShell::ExecCmd en vind een geschikte plaats de volgende code in te voegen:

 else if (!strcmp(c,"newcmd")) cmdNewCmd(args); 

Dit zal uw opdracht toevoegen en roept u de methode van de cmdNewCmd die u in de volgende stap zal schrijven.

2. Schrijf uw aangepaste opdrachtcode
In hetzelfde bestand, voeg uw aangepaste opdrachtcode. Dit is de definitie van de methode. U zal nog steeds wil de verklaring shell.h. Gewoon toevoegen aan de andere opdrachten. In het vorige voorbeeld, de code kan als volgt uitzien:

 voidAVRShell::cmdNewCmd(char ** args){ sprintf_P(buff,PSTR("Your command is %s\r\n",args[0]); WriteRAM(buff);} 

Er zijn verschillende dingen hier. Ten eerste, "buff" is een 40-karakter array buffer waarin de code voor uw gebruik. Wij gebruiken het programma geheugen versie van sprintf aangezien wij bent het passeren van een PSTR. U kunt gebruiken als je wilt de normale versie, maar ervoor zorgt dat u don't het formaat pass in een PSTR. Ook zijn de argumenten in de array args. Als u hebt getypt "newcmd arg1 arg2" kunt u op deze argumenten met de args [0] en subscript args [1]. U kunt een maximum van MAX_ARGS argumenten, doorgeven, zoals gedefinieerd in de code. Voel je vrij om wijzigt u die waarde wanneer u hercompileren als u veel meer argumenten moet moeten worden doorgegeven in een keer.

De WriteLine en WriteRAM zijn globale functies die van de UART methoden met dezelfde naam terugkeren. Het 2e argument voor deze functie is impliciet. Als u niets doorgeeft, zal een MS-DOS-prompt daarna worden geschreven. Als yo doorgeven een 0 als de 2e argument, een prompt niet zal worden geschreven. Dit is handig wanneer u schrijven verschillende afzonderlijke tekenreeksen om uit te voeren wilt voordat de MS-DOS-prompt aan de gebruiker wordt geretourneerd.

3. hebben de shell van de opdrachtcode uitvoeren
Je hebt al verteld dat de executeur van de shell voor het uitvoeren van de methode cmdNewCmd wanneer u de nieuwe opdracht setup, maar toe te voegen aan het bestand shell.h om het door de Shellobject begrepen te hebben. Gewoon toevoegen onder de laatste opdracht of voor de eerste opdracht, of ergens daar.

En thats it. Compileren en uploaden de firmware naar uw Arduino en uw nieuwe opdracht is beschikbaar vanuit de shell een opdrachtprompt.

Gerelateerde Artikelen

Hoe zet uw smartphone aan een generieke shield voor Arduino

Hoe zet uw smartphone aan een generieke shield voor Arduino

Hallo jongens, ik ben een van de makers van 1Sheeld, het is een mobiele app en een bestuur dat uw smartphone in een open platform voor Arduino verandert.OnderdelenArduino Uno 19,99 dollar1Sheeld $54.94Breadboard, springpaarden, LEDsHet idee is eigenl
Bouwen van een ISP-Shield voor Arduino

Bouwen van een ISP-Shield voor Arduino

dit Instructable is voor de instructies van de bouw voor onze nieuwe AVR ISP Shield Kit voor Arduino. Haar ontwikkeling heeft veel te danken aan Instructables en onze eigen Gemeenschap (met name Nick!) en ik hoop om uit te leggen wat van die langs de
Android telefoon gebruikt als een GSM-shield voor arduino

Android telefoon gebruikt als een GSM-shield voor arduino

hier mijn een andere video toont het gebruik van app uitvinder en bluetooth communicatie interface een arduino board en een Androïde apparaat. Ditmaal ben ik laten zien hoe de SMS-functie gebruiken om te zetten van de telefoon in een gratis GSM shiel
Hoe maak je een nuttige Photoreflector voor Arduino

Hoe maak je een nuttige Photoreflector voor Arduino

Dit is een hoe te maken van een handig photoreflector voor de Arduino.Photoreflector is een sensor die is wordt vaak gebruikt voor lijn tracer.Stap 1: ToolsSoldeerboutSoldeer (1.0 mm)NipperStap 2: materialenPhotoreflector LBR-127HLD, 50JPY180 Registo
Maak een breadboard adapter voor uw AVR microcontroller

Maak een breadboard adapter voor uw AVR microcontroller

als je wilt spelen rond met micro controllers weet je deze drukte: U wilt testen een deel van een programma en moet u eerst volledig kabellengte tot de uC op het bord brood.Niet met deze handige onderdelen meer!Dit zijn de volledige programmeerbare m
Zet een potlood tekening in een capacitieve sensor voor Arduino

Zet een potlood tekening in een capacitieve sensor voor Arduino

wist je dat?  Kun je potlood tekeningen reactieve raken voor gebruik met uw projecten!  Het is echt makkelijk, en geeft u veel flexibiliteit bij het maken van interfaces voor welke microcontroller project u aanbrengt.Ik samen te stellen dit als onder
Het kiezen van een ATmegaX8 variant voor Arduino-type projecten

Het kiezen van een ATmegaX8 variant voor Arduino-type projecten

bij het doorlezen van de Digikey en Mouser aanbiedingen voor ATmega328 chips, er zijn enkele subtiele verschillen die niet blijkt uit de aanbiedingspagina. Het is gemakkelijk om te kiezen tussen een 168 en een 328 chip, maar wat over de letters na di
Waterniveau Sensor Module voor Arduino AVR ARM STM32 STM8

Waterniveau Sensor Module voor Arduino AVR ARM STM32 STM8

Proficiat aan het team van ICStation ! Zij hebben deze prachtige waterniveau Sensormodule ontwikkeld door grote inspanningen. Deze module met klein formaat en hoge kosteneffectieve is makkelijk te gebruiken. In dit artikel, zullen we de digitale gehe
Hoe maak je een veilige voeding voor arduino met 9 volt batterij

Hoe maak je een veilige voeding voor arduino met 9 volt batterij

U moet een 9V batterij clip (module aansluiting), een 2.1mm stekker, een soldeerbout en wat soldeer. Elke hobby winkel moet deze items.Stap 1: een stabiele (geregeld) 5V DC, die ofwel u via de USB-elektrische leidingen, of via de schild-connectors op
Een geavanceerde benadering van programmering van Arduino & AVR

Een geavanceerde benadering van programmering van Arduino & AVR

Dit instructable is een must read voor iedereen die vertrouwd is met core AVR chips en Arduino.Nou, om meer specifieke, bij het lezen van de instructable, zal u zitten kundig voor:1) weten het juiste verschil tussen AVR en Arduino.2) programmering Ar
Hack een Toaster Oven voor Reflow solderen

Hack een Toaster Oven voor Reflow solderen

als ik ernstiger in mijn elektronica hobby krijgen, ik moet werken met meer SMD componenten. Sommige onderdeelpakketten zijn zeer moeilijk of onmogelijk om te solderen met een traditionele soldeerbout. U kunt dit probleem oplossen, besloten heb ik om
Bouwen van Android Bluetooth App voor Arduino

Bouwen van Android Bluetooth App voor Arduino

Hallo, ga vandaag ik om een android app voor arduino Bluetooth module HC-06 te maken. Via deze app kunt u een lichte of led formulier uw Androïde telefoon. Kunt doen...Stap 1: Ga naar Android editorGa naar MIT App uitvinderLink: http://appinventor.mi
Stapsgewijze LCD bedrading (4 Bit modus) en voorbeelden van de programmering voor Arduino

Stapsgewijze LCD bedrading (4 Bit modus) en voorbeelden van de programmering voor Arduino

dit instructable zal gids een gebruiker stapsgewijze in bedrading en programmering van een Hitachi HD44780 (of compatibele) chipset LCD-scherm aan een Arduino, met behulp van de LiquidCrystal-bibliotheek. Programmering voorbeelden gegeven voor alle o
Relais boord voor Arduino voor minder dan $8.

Relais boord voor Arduino voor minder dan $8.

Hallo vrienden, vandaag ga ik om u te vertellen hoe maak je een relais boord voor Arduino voor minder dan $8. In dit circuit gaan we niet IC of transistor te gebruiken. Dus, laten we het doen!Stap 1: Verzamel de onderdelen- Stap 2: Verzamelen de extr