Dokumentation besser formulieren

This commit is contained in:
Nero 2022-04-07 17:46:11 +00:00
parent edd2e9f775
commit 776eb7ba3d
2 changed files with 15 additions and 7 deletions

View File

@ -1,7 +1,12 @@
---
author: Nero
title: KsKit für Eisenbahn.exe
---
# KsKit für Eisenbahn.exe
KsKit ist eine Sammlung von Lua-Funktionalität, welche ich auf meinen Anlagen für eine vorbildgerechte Signalisierung einsetze.
Die hier geschilderten Anwendungsfälle und Programmsnipsel stellen kein Komplettpacket dar, sondern sind eher wie ein Kuchen anzusehen, aus denen man sich ein paar Rosinen rauspicken darf.
Die hier geschilderten Anwendungsfälle und Programmschnipsel stellen kein Komplettpacket dar, sondern sind eher wie ein Kuchen anzusehen, aus denen man sich ein paar Rosinen herauspicken darf.
Aus dem Basisscript dürfen Teile entnommen werden und anderswo verwendet werden, dabei ist die Herkunft und Versionsnummer zu nennen, z.B. als Quellcode-Kommentar.
Die Versionsnummer befindet sich am Anfang des Basisscripts und kann über die Variable `KsKitVer` abgefragt werden.
@ -23,6 +28,8 @@ Die Orte sind in diesem Fall mit dem Installationsort abzugleichen.
Bei der Entwicklung des Basisscriptes haben sich einige Mechanismen als sehr praktisch erwiesen, um die Komplexität des Codes im Zaum zu halten.
Wer auf das KsKit aufbauend noch weitere Funktionalität scripten möchte, sollte sich die folgenden Sektionen zu Rate ziehen.
### Mainfunktionen
Das Basisscript bringt eine eigene EEPMain mit, daher darf von Seiten des Anlagen-Scriptes keine weitere EEPMain definiert werden.
@ -30,8 +37,8 @@ Soll Lua-Code im Rahmen der EEPMain ausgeführt werden, wird mittels MainFunktio
Als Argument wird eine Funktion übergeben, welche keine Argumente nimmt.
Diese Funktion wird dann in jedem Zyklus einmal aufgerufen.
Der Vorteil dieser Verfahrensweise liegt darin, das vom User keine EEPMain mit Referenzen auf verschiedene Anlagenkomponenten angelegt und aktualisiert werden muss.
Auf einer Anlage können beliebig viele Mainfunktionen eingesetzt werden.
Dies entspricht dem Beobachter-Muster in der professionellen Softwareentwicklung.
Anstatt in einer zentralen Stelle alle zu informierenden Ziele aufzulisten, kann die EEPMain von verschiedenen Stellen im Quellcode aus "abonniert" werden.
```
MainFunktion(function()
@ -51,10 +58,11 @@ Ein herkömmlicher Signal-Callback kann nur an einer einzigen Stelle definiert w
An einigen Stellen ist es jedoch notwendig, das mehrere Stellen über ein Umschalten eines Signals informiert werden wollen.
Mittels der SignalFunktion kann eine Funktion an ein Signal angebunden werden.
Ändert das Signal nun seine Stellung, wird die Funktion mit der neuen Stellung als Argument aufgerufen.
Als erstes Argument bei der Anbindung wird die ID des Signales angegeben.
Dabei kann es sich auch um ein Fahrstraßen-Signal handeln.
Als zweites Argument wird eine Funktion eingetragen, welche als erstes Argument die neue Stellung übergeben bekommt.
Als konkretes Beispiel sind einzelnstehende Vorsignale im Bahnhofsbereich zu betrachten.
Mehere Vorsignale können von einem Hauptsignal abhängig sein und benötigen Informationen über dessen Schaltzustand als auch über den Schaltzustand der dazwischenliegenden Fahrstrasse.
Der Mehrwert ist schnell ersichtlich: Waren bisher alle zu informierenden Vorsignale, Bahnschranken und dergleichen. in der EEPOnSignal_X() einzutragen, können sich die für die Vorsignale oder Bahnübergänge verantwortlichen Code-stellen nun selbstständig als "Abonnenten" der Signalstellung eintragen.
Als Beispiel wird eine Signalfunktion definiert, welche lediglich die neue Stellung eines Signals ausgibt:

2
grapho

@ -1 +1 @@
Subproject commit 094ef7a2de22c7698938877eaf22b4d958722805
Subproject commit 5196199acba962cc6c47f08b8b86428ae88e38d1