KAPITEL 13. DER PROTOKOLLMONITOR
Weiter oben haben wir bereits die Verbindung zwischen dem Filtereingabefeld
und der split Funktion angedeutet. Die aktuelle Eingabe im Filter Control
wird der split Funktion per Parameter filter zur Verfügung gestellt. Wir müs-
sen nur den Suchstring "02" in Zeile 3 durch den filter Parameter ersetzen wie
im nachfolgenden Code gezeigt.
1
function s p l i t ( data , i n t v a l , a l t e r , s t r , f i l t e r )
2
i f data == 58 then r e t u r n STARTED end
3
i f s t r : f i n d ( f i l t e r ) == 2 then r e t u r n REMOVED end
4
i f s t r : f i n d ( " \ r \ n " ) then r e t u r n COMPLETED end
5
r e t u r n MODIFIED
6
end
Ohne eine gültige Filtereingabe (z.B. einem leeren Eintrag) oder einer nicht
passenden Geräteadresse wird die REMOVED Bedingung immer ignoriert und
das Telegramm in der Anzeige dargestellt. Sobald aber der im Filter Control
eingegebene Text im Telegramm an Position 2 gefunden wird, kehrt die split
Funktion mit REMOVED zurück und das Telegramm mit der entsprechenden
Adresse wird unterdrückt.
Sie können das leicht prüfen sobald Sie die Änderungen in Ihrem Template
übernommen haben. Geben Sie im Filter Control 01 ein und drücken Sie En-
ter. Alle Telegramme mit Adresse 1 verschwinden aus dem Telegrammfenster.
Ändern Sie nun die Eingabe auf 02 und schließen Sie die Eingabe mit Enter
ab. Alle nun angezeigten Telegramme haben die Adresse 1.
Lassen Sie uns unser Beispiel noch ein wenig ausbauen und einen Filterme-
chanismus für die drei verschiedenen Funktionsnummern implementieren.
1
Temperature
2
Moisture
3
Pressure
Die Funktionsnummer wird als Hex ASCII in den Bytes 4 und 5 des Telegramms
übertragen.
Der Anwender sollte im Filter Control die Funktion auswählen können, die er
sehen möchte. (Im Beispiel mit den Geräteadressen war das genau umge-
kehrt). D.h. im Falle einer Eingabe von 1 (Temperatur) sollen alle Telegramme
bezüglich Feuchtigkeit oder Druck per REMOVED aus der Anzeige verschwin-
den.
1
function s p l i t ( data , i n t v a l , a l t e r , s t r , f i l t e r )
2
i f data == 0x3A then r e t u r n STARTED end
3
i f f i l t e r == " 1 " then
4
i f s t r : sub ( 4 , 5 ) == " 0 2 " or s t r : sub ( 4 , 5 ) == " 0 3 " then
5
r e t u r n REMOVED
6
end
7
e l s e i f f i l t e r == " 2 " then
8
i f s t r : sub ( 4 , 5 ) == " 0 1 " or s t r : sub ( 4 , 5 ) == " 0 3 " then
9
r e t u r n REMOVED
10
end
11
e l s e i f f i l t e r == " 3 " then
12
i f s t r : sub ( 4 , 5 ) == " 0 1 " or s t r : sub ( 4 , 5 ) == " 0 2 " then
13
r e t u r n REMOVED
14
end
15
end
134