Dokumentation besser formulieren
This commit is contained in:
parent
edd2e9f775
commit
776eb7ba3d
20
README.md
20
README.md
@ -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
2
grapho
@ -1 +1 @@
|
||||
Subproject commit 094ef7a2de22c7698938877eaf22b4d958722805
|
||||
Subproject commit 5196199acba962cc6c47f08b8b86428ae88e38d1
|
Loading…
Reference in New Issue
Block a user