Time
0.137345
Eine einfache Box
KAPITEL 13. DER PROTOKOLLMONITOR
1
function o u t ( )
2
your f o r m a t i n g i n s t r u c t i o n s
3
end
Das Prinzip des neuen Ausgabe-Mechanismus basiert auf einer Menge von
individuellen rechteckigen Boxen angeordnet in einer Zeile, wobei jede Zeile
ein Telegramm repräsentiert.
Jede dieser Boxen enthält einen Titel (caption) und einen Textinhalt (content),
beides spezifiziert durch den Anwender. Text- und Hintergrundfarbe sind frei
definierbar. Titel und Text sind Lua Strings und können das Ergebnis einer
beliebigen Operation mit den Daten des zugehörigen Telegrammes sein. Das
gleiche gilt für die Farben. Ein Beispiel:
Das folgende Bild zeigt ein einzelnes Modbus RTU Telegramm realisiert mit
dem neuen Mechanismus. Die verschiedenen Elemente des Telegramms wie
Geräteadresse, Funktionsnummer etc. werden in einzelnen Boxen dargestellt.
Die letzte Box enthält die validierte CRC16 Prüfsumme, wobei grün hier für
einen korrekten CRC16 Wert steht.
Die Größe (Breite) einer Box berechnet sich aus dem Inhalt. Jede neue Box
wird automatisch rechts neben der vorherigen Box angefügt. Das bedeutet:
Die Position der Boxen in einer Zeile ergibt sich aus der Reihenfolge, in welcher
diese in der Lua out() Funktion aufgerufen werden. Der erste Aufruf einer Box
zeichnet die Box ganz links (am Anfang der Zeile), der zweite Aufruf die Box
rechts neben der ersten und so weiter...
Eine einfache Box ist wie folgt definiert:
function o u t ( )
1
2
l o c a l t e l e g r a m = t e l e g r a m s . t h i s ( )
3
box . t e x t { c a p t i o n =" Time " , t e x t = t e l e g r a m : t i m e ( ) }
4
end
Beachten Sie! Wir verzichten hier darauf, die zugehörige Split Funktion zu zei-
gen und konzentrieren uns ausschließlich auf die Telegrammausgabe. Später
werden wir das Box Modell an einem Beispiel inklusive der Split Funktion dis-
kutieren.
Der obige Code liefert eine einfache Box wie am Rand gezeigt. Der Titel oder
die Überschrift ist 'Time' (wir wollen die Zeitmarke des Telegramms anzeigen).
Der Inhalt ist das Resultat des telegram:time() Aufrufs den wir später noch
erläutern. So lange wir keine Farben spezifizieren wird die Box mit schwarzem
Text/Rahmen und weißem Hintergrund ausgegeben.
Wir wollen nun die Ausgaben mit den eigentlichen Daten des Telegramms er-
gänzen.
function o u t ( )
1
2
l o c a l t e l e g r a m = t e l e g r a m s . t h i s ( )
3
box . t e x t { c a p t i o n =" Time " , t e x t = t e l e g r a m : t i m e ( ) }
4
box . t e x t { c a p t i o n =" Data ( hex ) " , t e x t = t e l e g r a m : dump { } }
5
end
Dazu fügen wir in Zeile 4 eine zweite Box hinzu. Anstelle die einzelnen Daten-
bytes einzeln zu extrahieren 'bitten' wir das Telegramm seine Daten in Form
114