KAPITEL 13. DER PROTOKOLLMONITOR
Mit den entsprechenden Anpassungen in den Zeilen 3, 7 und 11 im obigen Lis-
ting ist der Anwender nun in der Lage, die von ihm gewünschten Telegramm-
typen einfach per Mausklick aus der Filtereingabe auszuwählen. Und da der
Filtermechanismus immer Teil eines Protokoll-Templates ist kann jedes Proto-
koll mit exakt den Filtermöglichkeiten ausgestattet werden, die es erfordert.
13.4.2
Zwischen verschiedenen Telegramm Darstellungen wählen
Wie bereits zuvor erwähnt. Es macht keinen Sinn, die Ausgabe bestimmter
Telegramm Typen in der out() Funktion zu unterdrücken. Die Telegramme
werden - im Gegensatz zur Filterung innerhalb der split() Funktion - nicht
aus der internen Liste entfernt, sondern als 'leere' Zeile repräsentiert.
Allerdings kann hier das Filter Control verwendet werden, um den Anwen-
der abhängig von der Filtereingabe zwischen verschiedenen Darstellungsar-
ten wählen lassen zu können. Z.B. könnte bei Protokollen, die wiederum in ein
anderes Protokoll eingebettet sind, der äußere Protokollrahmen ein- oder aus-
geblendet werden. Oder eine etwas einfachere Anwendung, die uns zurück zu
unserem Beispiel führt.
Angenommen, Sie wollen bei der Anzeige der der Sensorwerte (Temperatur,
Feuchtigkeit und Druck) zwischen metrischen und Angloamerikanischen Maß-
einheiten wählen können. D.h je nach Auswahl im Filter Control: Die Anzeige
des Druckes wahlweise in psi oder bar und die Temperatur entweder in C
oder F. (Die Feuchtigkeit bleibt für beide Maßsysteme in Prozent).
Beginnen wir damit, die beiden Auswahl Varianten für die Filtereingabe zu de-
finieren. Dies erfolgt analog zu unserem bisherigen Filter Beispiel mit:
1
function f i l t e r s ( )
2
r e t u r n " M e t r i c , Anglo American "
3
end
Die Filtereingabe wird - wie bereits bei der split() Funktion als neuer Pa-
rameter filter an die out() Funktion übergeben. In der out() Funktion
können Sie die Eingabe entsprechend vergleichen und je nach Resultat unter-
schiedliche Ausgabevarianten zur Verfügung stellen. In unserem Fall die Aus-
gabe der Werte in einem metrischen Maßsystem oder umrechnen in das An-
gloamerikanische System.
Das folgende Code Beispiel soll Ihnen eine Vorstellung davon vermitteln, wie
das Ganze funktioniert. Alle im Tutorial verwendeten Werte (Temperatur, Druck,
Feuchtigkeit) werden in der Funktion GetFunctionValue() formatiert, d.h.
Anzahl der Dezimal- und Nachommastellen sowie physikalischen Einheiten.
GetFunctionValue() wird mit zwei Parametern aufgerufen, einer Nummer,
die den Typ definiert und der Wert selbst.
In Zeile 4 prüfen wir die Filtereingabe ('Metric' oder 'Anglo-American'). Die
metrische Auswahl erfordert keine zusätzlichen Schritte da die übertragenen
Werte bereits im metrischen System vorliegen. Dies entspricht dem Code im
Tutorial. Die neuen Änderungen beginnen im folgenden else Block ab Zeile 8.
Zuerst ändern wir die physikalischen Einheiten und fügen zwei Nachkommas-
tellen für den Druck in psi hinzu. Zeile 10 ist ein besonders schönes Beispiel,
wie einfach und elegant in Lua auch kompliziertere Sachverhalte gelöst werden
136