Lua: Unterschied zwischen den Versionen
Marco (Diskussion | Beiträge) (→return-Wert der App) |
Marco (Diskussion | Beiträge) (→Funktion registerForm()) |
||
Zeile 56: | Zeile 56: | ||
===Funktion registerForm()=== | ===Funktion registerForm()=== | ||
− | + | Funktion innerhalb der App registriert nach Aufruf ein interaktives Formular, welches in einem der Sender-Menüs untergebracht werden kann. Die Funktion sollte innerhalb der init()-Funktion stehen und während der Initialisierung der App aufgerufen werden. | |
system.registerForm (<formNo>, <parentMenuID>, <label>, <initFunction>, <keyPressFunction>, <printFunction>, <closeFunction>) | system.registerForm (<formNo>, <parentMenuID>, <label>, <initFunction>, <keyPressFunction>, <printFunction>, <closeFunction>) | ||
{| class="wikitable" | {| class="wikitable" |
Version vom 22. Juli 2020, 12:33 Uhr
Inhaltsverzeichnis
Allgemeines
Lua ist eine freie Skriptsprache, die in erster Linie dazu konzipiert wurde, um Erweiterungen in C-basierte Programme einbinden zu können. Lua greift hierbei auf Schnittstellen (APIs) des Programms zu. So wird eine Trennung zwischen dem eigentlich Programm und den vom Benutzer entwickelten Erweiterungen sichergestellt. Lua kann zur Erweiterung von JETI Duplex DS/DC-Fernsteuersystemen genutzt werden.
Kompatible JETI Duplex-Systeme
Die folgenden JETI Duplex-Systeme können mit Lua-Apps um benutzerdefinierte Funktionen erweitert werden:
- Handsender JETI Duplex DS-12
- Handsender JETI Duplex DS-16
- Handsender JETI Duplex DS-16 II
- Handsender JETI Duplex DS-24
- Pultsender JETI Duplex DC-16
- Pultsender JETI Duplex DC-16 II
- Pultsender JETI Duplex DC-24
Entwicklung von Lua-Skripten
Um Lua-Skripte zu entwicklen genügt theoretisch ein einfacher Text-Editor wie z. B. Notepad++ idealerweise mit Text-Highlighting. Die komfortablere Alternative stellt jedoch eine Entwicklungsumgebung (IDE) wie z. B. ZeroBrane Studio oder Atom dar. Die Skripte, die in dieser Dokumentation beschrieben werden, wurden mit Atom entwickelt.
Entwicklungsumgebung Atom
Die Entwicklungsumgebung Atom ist kostenlos für die Plattformen Windows, MAC und Linux erhältlich.
Download
Informationen zum Download findet Ihr im Bereich Downloads.
Plugin für Lua-Text-Highlighting
Um das sprachspezifische Text-Highlighting für die Lua-Programmiersprache zu implementieren, muss das Package "language-lua" nachinstalliert werden.
Um das Package "language-lua" zu installieren, klicken Sie im Menüpunkt "Edit" auf den Eintrag "Preferences". In der Tab-Leiste erscheint der Tab "Settings". Klicken Sie im Tab "Settings" links auf den Menüpunkt "Install" und geben Sie im Suchfeld "language-lua" ein. Klicken Sie beim entsprechenden Suchergebnis auf den blauen Button "Install". Das Package "language-lua" wurde installiert, das Text-Highlighting funktioniert nun.
Lua-Apps auf JETI Duplex DS/DC-Sendern
Jede App besteht aus einer einzelnen Skript-Datei, die im Ordner "/Apps" auf der SD-Karte des entsprechenden Senders abgelegt wird. Zusätzliche Skript-Dateien oder Lua-Libaries können mit dem "require"-Statement eingebunden werden.
return-Wert der App
Jede App muss ein Table zurückgeben, welcher die Schnittstellen der App beschreibt.
return {init = init, loop = loop, author = "Hacker Motor GmbH", version = "1.0", name = "App name"}
Funktion | Beschreibung |
---|---|
init(<code>) | Wird aufgerufen wenn ein Modell geladen oder geändert wird. Hier werden sämtliche Variablen initialisiert sowie die Telemetrie-Fenster und Konfigurations-Formulare registriert. |
loop() | Wird in regelmäßigen Intervallen (20 bis 30 Milliskeunden) aufgerufen. |
destroy() | Wird aufgerufen bevor die Lua-Umgebung abgebrochen wird. Sie kann zum Bereinigen aller Resourcen und zum sicheren Schließen einer App genutzt werden. |
Funktion registerForm()
Funktion innerhalb der App registriert nach Aufruf ein interaktives Formular, welches in einem der Sender-Menüs untergebracht werden kann. Die Funktion sollte innerhalb der init()-Funktion stehen und während der Initialisierung der App aufgerufen werden.
system.registerForm (<formNo>, <parentMenuID>, <label>, <initFunction>, <keyPressFunction>, <printFunction>, <closeFunction>)
Parameter | Beschreibung |
---|---|
formNo | Beschreibung. |
parentMenuID | Beschreibung |
label | Beschreibung |
initFunction | Beschreibung |
keyPressFunction | Beschreibung |
printFunction | Beschreibung |
closeFunction | Beschreibung |
Grundsätzlicher Skript-Aufbau für DS/DC-Sender
local appName = "Hacker Motor Info App 3" local appVersion = "0.42" local appAuthor = "Marco Köhler, Hacker Motor GmbH" local function initForm(subform) form.addLabel({label="Page "..subform,font=FONT_BIG}) if(subform == 1) then -- Link to the following subform form.addLink((function() form.reinit(2) end), {label = "Next >>"}) else -- Link to the first subform form.addLink((function() form.reinit(1) end), {label = "<< Back"}) end end local function init(code) system.registerForm(1,MENU_MAIN,appName ,initForm, keyForm, printForm, closeForm) end return {init=init, loop=nil, author=appAuthor, version=appVersion, name=appName}
Links
Offizielle Links
- Lua 5.3 Reference Manual (Englisch)
- DC/DS-24 Lua Programming API für Entwickler (Deutsch)
- DC/DS API-Dokumentation (PDF) (Englisch)
Sonstiges hilfreiche Links
Downloads
Entwicklungsumgebungen
JETImodel
Fertige Lua-Skripte von Drittanbietern
- Text
- Text