16
i f s t r : f i n d ( " \ r \ n " ) then r e t u r n COMPLETED end
17
r e t u r n MODIFIED
18
end
Der obige Code filtert alle Telegramme mit Ausnahme der im Filter Control ein-
gegebenen Nummer aus. Aber manchmal ist es schwer sich an die richtige
Nummer zu erinnern. Vor allem dann, wenn das Protokoll eine weitaus größe-
re Zahl von Funktionsnummern unterstützt.
Wir werden deshalb im nächsten (und letzten Schritt) das Filtern noch etwas
vereinfachen, indem wir das Filter Control mit einer Liste von Auswahlmöglich-
keiten vorbesetzen. Dazu werden wir eine weitere Funktion neben split und
out einführen. Diese spezielle filters Funktion erlaubt Ihnen die Filterein-
gabe in der Werkzeugleiste mit beliebigen Einträgen zu füllen. Die Definition
dieser Funktion ist simpel:
1
function f i l t e r s ( )
2
r e t u r n " Temperature , Moisture , Pressure "
3
end
Die filters Funktion muss immer einen einzelnen Textstring zurückgeben,
wobei jeder auszuwählende Eintrag durch ein Komma getrennt ist. Der erste
Eintrag erscheint als ganz oben, der letzte ganz unten in der Auswahlliste des
Filter Controls.
Sie können die filters Funktion an beliebiger Stelle des Skripts platzieren,
nicht aber innerhalb einer anderen Funktion. Wir empfehlen diese am Anfang
des Templates einzugeben.
Die Einträge in dem zurückgelieferten String erscheinen in dem Filter Control
sobald der interne Lua Interpreter das Skript ausgeführt hat. In unserem Fall
sind es die Einträge: Temperatur, Moisture und Pressure.
Jetzt müssen wir nur noch die REMOVED Bedingungen dahingehend ändern,
dass wir an Stelle der Funktionsnummern die in filters definierten Einträge
verwenden. (Sie finden das komplette Template im Examples Verzeichnis als
tutorial-complete-with-filtering.msbtml).
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 == " Temperature " 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 == " M o i s t u r e " 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 == " Pressure " 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
16
i f s t r : f i n d ( " \ r \ n " ) then r e t u r n COMPLETED end
17
r e t u r n MODIFIED
18
end
13.4. FILTERUNG
135