KAPITEL 13. DER PROTOKOLLMONITOR
aber nur relativ kleine Funktion in out() platzieren und bei umfangreicheren
Funktionen (oder mehreren) diese z.B. am Ende des Skriptes anlegen.
1
function o u t ( )
2
function i n s i d e ( )
3
do something
4
end
5
c a l l t h e f u n c t i o n
6
i n s i d e ( )
end
7
Lassen Sie uns die einzelne Code Schnipsel zusammentragen. Das folgende
Listing zeigt die signifikanten Modifikationen. Wir fügen die Funktion GetFunctionName()
innerhalb out() hinzu und rufen diese mit der Funktionsnummer des Tele-
gramms in Zeile 24 auf.
1
function o u t ( )
2
3
function GetFunctionName ( number )
4
l o c a l names = { " M o i s t u r e " , " H u m i d i t y " , " Pressure " }
5
r e t u r n names [ number ]
6
end
7
8
access t h e c u r r e n t t e l e g r a m
9
l o c a l t g = t e l e g r a m s . t h i s ( )
10
l o c a l b i n d a t a = base16 . decode ( t g : s t r i n g ( ) : sub ( 2 ,
11
. . .
23
t h e f u n c t i o n number f i e l d
24
box . t e x t { c a p t i o n =" Function " , t e x t =GetFunctionName ( b i n d a t a : b y t e ( 2 ) ) ,
f g = f c , bg=bc }
25
. . .
26
end
Und hier das Ergebnis für die ersten beiden Telegramme:
Time
SOF
Address
2.339189
:
2
Time
SOF
Address
2.351468
2
:
Die Anzeige der Funktionsnamen ist lediglich ein Beispiel wie bestimmte Ab-
schnitte eines Telegramms in ein von Menschen lesbares Format umgewandelt
werden können. Genauso einfach ließe sich noch statt der Geräteadresse der
Gerätename ausgegeben.
Wir werden uns aber im Folgenden ganz auf die Daten selbst konzentrieren.
In unserem Protokoll beantworten die Geräte den per Funktionsnummer er-
fragten Wert als Fliesskommazahl. Die Zahl entspricht dabei der Temperatur,
der Feuchtigkeit oder dem Luftdruck.
Das Fliesskommaformat besteht aus vier Bytes im bindata String (bzw. acht
Bytes in der ursprünglichen Telegramm Sequenz). Das obige Bild zeigt die 4
Bytes in der Data (hex) Box des Antwort Telegramms.
Unsere nächste Aufgabe besteht darin, eine bestimmte Anzahl von Bytes in
eine Zahl umzuwandeln.
126
Function
Checksum
EOS
Moisture
C4
0D 0A
Function
Data (hex)
Checksum
Moisture
0F 15 6A 42
7D
3 ) )
EOS
0D 0A