KAPITEL 13. DER PROTOKOLLMONITOR
Time
SOF
Address
2.351468
:
2
Verglichen mit der ersten Anzeige ist das deutlich informativer und verständ-
licher. Wir sind damit aber noch nicht am Ende. Unser Template enthält noch
einigen Spielraum für weitere Verbesserungen. Zum Beispiel: Die Fließkomma-
zahl wird mit zu vielen Nachkommastellen dargestellt. Und es wäre natürlich
schön die Prüfsumme zu validieren.
Lua enthält ein integriertes string Modul welches neben den üblichen String-
Operationen wie suchen, ersetzen und regulären Ausdrücken auch eine C ähn-
liche Formatfunktion bietet.
35
box . t e x t { c a p t i o n =" Data " , t e x t = s t r i n g . f o r m a t ("%.2 f " , v a l u e ) , bg=bc , f g = f c }
string.format unterstützt eine ganze Reihe von Variablentypen und Optio-
nen. Detaillierte Informationen dazu finden Sie in einem der Online Manuals die
am Ende des Kapitels aufgelistet sind. Hier verwenden wir die Format(ierungs)-
Anweisung "%.2f", die eine gegebene Fliesskommazahl ('f') mit 2 Nachkom-
mastellen ausgibt.
Als kleine Übung können Sie eine Funktion erstellen, die abhängig von der
Funktionsnummer einen entsprechenden Formatstring inklusive physikalischer
Einheit zurückgibt. Eine mögliche Lösung sehen Sie hier:
1
function GetFunctionFormat ( number )
2
l o c a l f o r m a t s = { "%.2 f Deg " , "%.2 f %%", "%imBar " }
3
r e t u r n f o r m a t s [ number ]
4
end
5
6
i f # b i n d a t a >= 7 then
7
i t i s a response
8
l o c a l next , v a l u e = bunpack ( b i n d a t a , " < f " , 3 )
9
box . t e x t { c a p t i o n =" Value " ,
10
t e x t = s t r i n g . f o r m a t ( GetFunctionFormat ( b i n d a t a : b y t e ( 2 ) ) ,
11
bg=bc , f g = f c }
12
end
Mit Ausnahme des "%.2%%" sollte der Code eigentlich selbsterklärend sein.
Das Prozentzeichen wird bei Formatanweisungen als Platzhalter für die über-
gebene Variable benutzt. Wenn Sie das Prozentzeichen mit ausgeben möchten
(hier im Falle der Luftfeuchtigkeit) müssen Sie die Platzhalterbedeutung durch
ein weiteres Prozentzeichen ausschalten, d.h. einfach gesprochen zwei Pro-
zentzeichen im Formatstring angeben.
Prüfsumme validieren
Unsere Einführung in den neuen Template Mechanismus ist damit fast am En-
de. Zu guter Letzt wollen wir noch die Prüfsumme der einzelnen Telegramme
validieren. Dabei sollen korrekte Prüfsummen grün (für OK) und fehlerhafte in
einem hellen Orange ausgegeben werden.
Die Prüfsumme in unserem Protokoll wird einfach gebildet durch Addieren alle
Bytes beginnend mit dem ersten Adressbyte und mit dem letzten Datenbyte
endend. Der Doppelpunkt sowie das CRLF werden nicht berücksichtigt. Die
Prüfsumme ist auf 8 Bit beschränkt, Überläufe bei der Addition werden des-
halb ignoriert.
Die Funktion zur Bildung der Prüfsumme sieht wie folgt aus:
130
Function
Value
Moisture
58.520565032959
v a l u e ) ,
Checksum
EOS
7D
0D 0A