Im Funktionsrumpf können Sie durch das Datenmonitor eigene data Modul
auf jedes aufgenommene Byte zugreifen - absolut oder relative zur aktuellen
Cursor Position. Ein Beispiel:
1
function onchange ( c u r s o r , selbeg , selend )
2
i n p u t your code here
3
r e t u r n data . a t ( c u r s o r ) : v a l ( )
4
end
Die Funktion onchange liefert hier einfach den Datenwert an der aktuellen
Cursor Position zurück. Mittels der Modul Funktion data.at können Sie Infor-
mationen zu jedem Byte durch Angabe der Byte Position - wie in der Adress-
leiste zu sehen - abfragen.
Das Resultat von data.at(cursor) ist ein Datenobjekt welche alle wichti-
gen Eigenschaften des Datenbytes enthält. Diese sind neben dem eigentlichen
Wert (auch 9-Bit), die Quelle (oder Richtung) sowie wann das Datenbyte emp-
fangen wurde. Hier fragen wir allerdings nur den Wert ab und geben diesen als
einfach Lua Zahl zurück.
Der Rückgabewert von onchange wird immer als Lua Tabelle mit Schlüs-
sel/Werte Paaren interpretiert. Ist es wie hier nur ein einfacher Wert, wird dieser
als Schlüssel/Name angezeigt und der Wert bleibt blank. Das Ergebnis sieht
dann so aus:
A8
Das von data.at() gelieferte Datenobjekt enthält - wie gesagt - noch weitere
Informationen, die wir ebenfalls abfragen und anzeigen können. Erweitern wir
unser Beispiel deshalb zu:
1
function onchange ( c u r s o r , selbeg , selend )
2
i n p u t your code here
3
l o c a l d = data . a t ( c u r s o r )
4
r e t u r n {
5
[ " Value " ] = s t r i n g . f o r m a t ("%02X " , d : v a l ( ) ) ,
6
[ " Time " ] = d : t i m e ( ) . . " s " ,
7
[ " Source " ] = d : d i r ( )
8
}
end
9
In Zeile 3 speichern wir zunächst das Ergebnis von data.at() als lokale Va-
riable. d enthält damit alle von uns benötigten Informationen. In Zeile 4 erzeu-
gen wir eine Lua Tabelle, fügen diese als Schlüssel/Werte Paare (siehe 17.2.5)
ein und geben sie zurück. Das Ergebnis im Lua Ausgabefenster sieht so aus:
Source 1
Time
354.84122s
Value
3F
Da das Ergebnis bereits als Tabelle (oder Array) von Schlüssel/Werte Paare
vorliegt, ist es einfach, dieses als zweispaltige Tabelle darzustellen. Die linke
Spalte enthält dabei die Schlüssel (oder Namen), die rechte die zugehörigen
Werte.
Sie werden bemerken, das die Ausgabe in einer anderen Reihenfolge erfolgt.
Der Datenmonitor sortiert die von onchange gelieferte Tabelle immer in der
11.6. INTEGRIERTE SKRIPTSPRACHE LUA
77