13.6. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN
Example
1
rtsChanges = 0
2
function s p l i t ( data , i n t v a l , a l t e r , s t r )
3
l o c a l RTS = 6
i f l i n e s t a t e s . count ( RTS ) > 5 then
4
5
rtsChanges = 0
r e t u r n STARTED
6
end
7
r e t u r n MODIFIED
8
end
9
13.6.5
Das shared module
Der Protokollmechanismus verwendet für jede Datenrichtung einen eigenen,
unabhängigen Lua Interpreter. Dadurch müssen Sie sich in der split Funk-
tion keine Gedanken über die Datenquelle des übergebenen Datenbytes ma-
chen. Und auch die interne Telegramm Repräsentation (alle bislang empfange-
nen Zeichen, übergeben als str) beziehen sich immer auf eine Datenrichtung.
Die Verwendung zweier Interpreter macht zudem die Arbeitsweise der Template
Funktionen um einiges einfacher. Dies hat allerdings auch seinen Preis:
Obwohl globale Variablen auch außerhalb der split Funktion existieren (ent-
weder außerhalb deklariert bzw. nicht als local definiert), können Sie diese
dennoch nicht dazu verwenden um Informationen zwischen den beiden Inter-
pretern auszutauschen. Oder anders gesagt:
Wenn beide split Funktionen, die eine aufgerufen durch Daten an Port A
(CH1), die andere durch Daten an Port B (CH2), auf eine gemeinsame Varia-
ble zugreifen sollen, kommt das Modul shared ins Spiel.
Alle im Modul shared abgelegten Variablen sind von beiden Interpretern zu-
gänglich. So können Sie z.B. dort eine Variable anlegen wenn ein bestimmtes
Datenbyte an Port A empfangen wurde und den Wert dieser Variable bei der
Verarbeitung von Port B Daten verwenden.
Funktion
shared.get
shared.set
shared.get
Liefert den Wert/Inhalt der Variable mit dem übergebenen Namen oder nil falls
keine Variable dieses Namens existiert.
shared.get(name)
name: Der Name der Variable als ein Lua String.
shared.set
Legt eine neue Variable mit dem angegebenen Namen an und weist ihr den
übergebenen Wert zu. Sollte bereits eine Variable dieses Namens existieren,
Beschreibung
Liefert den Wert der Variable mit dem angegebenen Na-
men.
Speichert den Wert unter dem angegebenen Name.
151