Maak interactieve Microcontroller Apps in minuten (2 / 4 stap)

Stap 2: Menu definitie


ik denk niet dat ik heb ooit iemand ontmoet die echt relishes leren zoveelste programmering syntaxis (vooral met dreigende deadlines!), maar deze syntax is een beetje anders.  Dit is niet een algemene doel programmeer taal, maar een zeer gerichte syntaxis die bekend staat als een Domein specifieke talen (DSL ).  DSLs in het algemeen zijn krachtige tools die aanzienlijk versterker van uw vermogen kunnen om efficiënt te communiceren met de computer voor u en hun zeer beperkte scopes helpen om sneller uw beheersing van hen.

Nu neem een moment om te kijken naar het menu ontwerp bestand (afbeelding hieronder) dat werd gebruikt voor het genereren van de menu's voor de tuner.

Het menu bestand is een compacte specificatie die de codegenerator veel vertelt over de manier waarop die u zal omgaan met de toepassing.  --in het bijzonder het:

• Definieert de tekstregels voor één of meer menu 's
• Definieert velden binnen deze lijnen, die zal worden gekoppeld aan variabelen in het programma
• Opdrachten die moeten worden aangeroepen wanneer een veld is gewijzigd, of bij het opstellen van een veld definieert
• De typen voor bijbehorende variabelen evenals de grenzen of aanvaardbaar ingangen voor deze velden worden gedefinieerd
• Associates bepaalde knop ingangen met opdrachten moeten worden uitgevoerd of menu's worden geactiveerd

Menu's hebben dit formulier:

<MenuName > {[MenuCommand ] *

"MenuLine " [LineCommand ] *
}

MenuName
De menunaam staat altijd vermeld binnen punthaken, of is het definiëren van het menu, of handelen als het doelwit van een actie (bijvoorbeeld overschakelen naar < DisplaySettingsMenu >).  Het hoogste niveau menu is altijd HomeMenu genoemd.

MenuCommand
MenuCommands kan de vorm aannemen van een richtlijn van de no_cursor:

[no_cursor]

Dit vertelt de codegenerator dat geen cursor in dit menu moet worden weergegeven.  Meer in het algemeen, echter het MenuCommands zal de vorm aannemen van een link van de gebeurtenis die een knop input worden gekoppeld aan een bepaalde actie.  Acties kunnen overstappen naar een ander menu bv:

[long_back -> < DisplaySettingsMenu >]

Dit zorgt ervoor dat de machine van de staat om te schakelen naar de DisplaySettingsMenu als de back-knop ingedrukt wordt gehouden voor een volle seconde of meer.

Of een gebeurtenis link actie kan gewoon worden gebruikt om bijvoorbeeld een aanroep naar een door de gebruiker gegenereerde functie activeren:

[sel -> (toggleStrobe)]

Mogelijke gebeurtenissen opnemen:

sel, terug, omhoog, omlaag, long_sel, long_back

MenuLine
MenuLines zijn tekenreeksen die aangeven wat wordt getoond op het display en identificeert ook velden die gekoppeld aan variabelen via de LineCommands worden zal.  Meestal wil je de cursor om aan te geven van de geselecteerde regel ingeschakeld hebben.  Wanneer getoond, de cursor wordt weergegeven als een groter-dan in de eerste kolom, dus moet u ervoor dat u laat een lege ruimte op de eerste positie van elke regel.  Merk ook de opmerkingsregel die helpt bij het bijhouden van de maximale lijndikte--16 in dit geval, maar dit zal afhangen van de weergave die u gebruikt.  Velden zijn afgebakend door het plaatsen van een reeks van tekens die uniek is binnen de lijn die zal gepaard gaan met de bijbehorende LineCommands--er rekening mee dat u moet er zeker op maat van dit veld bevat het maximum aantal tekens voor elke mogelijke veldwaarde.

LineCommand
De LineCommand is wellicht het meest complexe deel van de syntaxis, maar gelukkig, dit is de laatste.  De LineCommand volgt altijd de regel die is het wijzigen en haar taak is om zowel lijn-specifieke select gebeurtenis acties definiëren en velden koppelen aan variabelen en om te bepalen welke typen van deze variabelen dus de gegenereerde code kan de variabelen in een type-geschikte manier.

Lijn-specifieke Selecteer gebeurtenissen zijn precies hetzelfde als de bovenstaande menu-niveau-gebeurtenissen, behalve dat hier de selecteren knop gebeurtenis de enige beschikbaar is als de andere knoppen niet meestal geassocieerd met een bepaalde lijn zijn.  Als gedefinieerd, overschrijft een lijn-specifieke select gebeurtenis de menu-global select gebeurtenis als de cursor op de regel in kwestie bevindt zich.

Veld variabele verenigingen nemen dit formulier

[FieldString richting doel :Type ]

FieldString
De FieldString die we al hebben besproken--het is de lijn-unieke tekenreeks die de locatie en de lengte van een bepaald veld binnen de MenuLine markeert.

Richting
De richting geeft aan of we een doel zijn associëren met een gebruikersgebeurtenis invoer-(>), of een draw event (<-) of beide (<> -).

Doel
Het doel kan zijn een variabele, een set of een draw functie, of een variabele en een waarde-gewijzigd-callback functie.

Target variabele (<-| -> | <> -): [min <> - timer_minutes]

Target Set functie (->): [spd -> (SetSpeed)]

Richten op vestigen functie (<-): [nnn <-(DrawNum)]

Variabele w/Callback target (-> | <> -): [xxx -> SetContrast(LCD_Contrast)]

[strobeMode <> - SetStrobeMode(strobeMode)]

Merk op dat het in laatste geval boven (het geval van de bi-directionele variabele w/Callback), de waarde-gewijzigd-callback wordt genegeerd in bij de opstelling van het veld.

Type
De parameter Type is verantwoordelijk voor de identificatie van het type variabele en de grenzen of de mogelijke waarden.
Beschikbare typen omvatten binary coded decimal, ondertekend of niet-ondertekende integer van 8, 16 of 32 bits of 8-bits opsommingen.  De syntaxis voor deze types is als volgt:

• BCD8, BCD16, BCD32
• U8, U16, U32
• S8, S16, S32
• enum

De parameter type heeft de vorm:

:Type (grenzen )

Merk op dat (grenzen) optioneel voor alles behalve enum typen zijn.

Voorbeelden:

: BCD8(0,0x99)

: U16(8,1000)

: enum ("None", "Lineaire", "Log")

: S16(-1000,1000)

: U32

En thats it.  Dat is het hele handboek voor de definitie van de menutaal!

Vervolgens zullen we kijken een de broncode moet voltooien de gitaar tuner.  We verwijderen de modus input als het bemoeilijkt de code een beetje zonder aanbod veel meer vanuit een oogpunt van leren.  Ook de 3 x-modus werkte veel beter dan de andere modi die we met experimenteerden, dus het niet zinvol om hen te bieden.

Gerelateerde Artikelen

How To: Maak een Android App met Android Studio controle LED

How To: Maak een Android App met Android Studio controle LED

Dit is een stapsgewijze tutorial voor het maken van een android apk via bluetooth.Vóór de start codering,Download Android Studio IDE en bijwerken van Java.Java en C programmeren zal helpen.Deze tutorial zal niet uitleggen Java programmering.Als u cod
Bedien uw Computer in de lucht als Tony Stark! (Maak uw eigen App Motion sprong)

Bedien uw Computer in de lucht als Tony Stark! (Maak uw eigen App Motion sprong)

Hallo iedereen,Ik ben Geeve George een 15-jarige Maker.I liefde computervisie, Androïde ontwikkeling en algoritme Design.I ben momenteel in 11de rang, en ook een onderzoek samenwerking Student met de MIT Media Lab India Intiative.Allermeest u zou kun
Hoe maak je een App met behulp van de Xcode

Hoe maak je een App met behulp van de Xcode

Maken van een App voor apple IPhones en IPads kunnen zeer moeilijk zijn. Als u eenmaal begrijpt hoe Xcode werkt, is het zeer eenvoudig te maken van uw eigen app.Stap 1: Wat moet ik beginnen 1) Apple Computer2) Xcode app voor Macs3) Swift of C++Stap 2
Hoe maak je draagbare app

Hoe maak je draagbare app

wat is een draagbare app? Een draagbare toepassing is een software die u op elke computer en zijn het lopen vanaf usb draagbare harde schijf, cd, dvd gebruiken kunt...Stap 1: Download programma 's u nodig:UniExtractWinRARInstalation van app die u wil
Papier Electronics: Maak interactieve, muzikale illustraties met geleidende inkt

Papier Electronics: Maak interactieve, muzikale illustraties met geleidende inkt

als je ooit een stuk papier tot leven brengen wilde, nu is uw kans. Dit instructable brengt u door alle noodzakelijke stappen om te maken een geweldige interactieve flyer of illustratie. De folder van dit evenement is geen gewone stuk voor print. Het
Hoe maak je eigen App Chrome

Hoe maak je eigen App Chrome

Dit proces duurt ongeveer 5 minuten.Stap 1: Open uw favoriete tekst-editorIn dit instructable, mij zal zitten using tekst.Stap 2: Type in de volgende tekst{"naam": "Typ de appsnaam hier","versie": "0.1","manife
Maak interactieve mode portefeuilles en Catwalks

Maak interactieve mode portefeuilles en Catwalks

Snelle vraag te beginnen:Wilt u liever te zien van de afbeelding aan de linkerkant?Of een interactieve video van uw modevormgeving zoals getoond op het recht? (Klik om te beginnen) >>Ik hoop dat iedereen het ermee eens dat de een aan de rechterkant
DIY-Maak papier Parachute in 5 minuten

DIY-Maak papier Parachute in 5 minuten

Kinderen zijn gefascineerd met vlucht, dus heb ik besloten om speelgoed "Papier Parachute" door het maken van parachutes met behulp van gewoon papier en strijkers. Als wij van hoogte of doorheen de hemel vallen komt het terug in zijn stijl. U ku
Maak Rorschach schilderij in 5 minuten!

Maak Rorschach schilderij in 5 minuten!

Zwitserse psycholoog Hermann Rorschach verjaardag werd gevierd op 8 November. De patronen van de inkblot hij bij de test gebruikte zijn zeer eenvoudig te maken en geven van een leuke toevoeging aan het interieur. Het vereist geen schilderij vaardighe
Hobo kachel - Ultralight backpacken - Maak het jezelf In 3 minuten - 1oz

Hobo kachel - Ultralight backpacken - Maak het jezelf In 3 minuten - 1oz

Hobo kachel - Ultralight backpacken - bouwen In 3 minuten! - Klik hier voor meer video's van blooper Check out deze ultralichte alcohol kachel. Het weegt slechts 1 oz en heeft geen bewegende delen. Je kunt er zelf in slechts een paar minuten en het z
Hoe maak je ijs in 10 minuten

Hoe maak je ijs in 10 minuten

Hallo ijs jongens vandaag die laat ik zien hoe thuis ijs maken in minder dan 10 minuten, in deze instructables die kunt u met weinig ingrediënten (melk, room, zout, ijs)Goed gedaanAls u wilt zien de video van deze tutorial Klik op de video hieronder!
Maak een brand detector in minuten met Samsung SAMIIO, Arduino UNO en Raspberry Pi

Maak een brand detector in minuten met Samsung SAMIIO, Arduino UNO en Raspberry Pi

Laten we het bouwen van een IoT apparaat dat stuurt vlam sensorgegevens naar SAMI, met behulp van de SAMI WebSockets. De IoT apparaat bestaat uit een off-the-shelf sensor, Arduino UNO en Raspberry Pi.In deze uitvoering, wordt een eenvoudige manifeste
Maak een omelet in 5 minuten!

Maak een omelet in 5 minuten!

Hello! Wilt u genieten van een snel ontbijt? Hier is hoe!Stap 1: De materialen ik bedoel... INGRIDIENTS! OK. Dus hier de materialen zijn:1 ei (u kunt meer, gewoon bijvoorbeeld)Een komSommige cheese(slices)Stap 2: wachten. Kunt u uw handen te wassen.D
Hoe maak je eigen APP!

Hoe maak je eigen APP!

Hallo iedereen!Vandaag ga ik delen hoe om uw eigen APP op een computer en de iphone te maken.Dit bespaart tijd in de ochtend doordat u niet hoeft te gaan naar een willekeurige website en dingen zo veel makkelijker maakt!Laat aan de slag!Stap 1: Wat t