Grundlagen
Kernsyntax der TapHome-Skriptsprache — Zuordnung, mehrzeilige Algorithmen, Rückgabewerte, Variablen, IF/ELSE, SWITCH, Schleifen, NaN, Kommentare, numerische Literale sowie mathematische und logische Ausdrücke.
Zuordnung
Mu := Se + 2;Mehrzeiliger Algorithmus
Jede Zeile wird durch ein Semikolon getrennt.
Last := Current;
Current := 0;Rückgabewert
- Ergebnis der letzten Codezeile
- RETURN(expression) stoppt die Ausführung des Algorithmus und gibt den Inhalt in Klammern zurück.
(Co2 > 800) AND (Wind < 10);
equals:
RETURN((CO2 > 800) and (Wind < 10));Temporäre Variable
Gilt nur für die einzelne Ausführung des Skripts.
VAR X := 5;IF-Klausel
Excel-Stil
IF(logical_expression, value_if_true, value_if_false);
IF(logical_expression, value_if_true);Mehrzeilige Form
IF X < 5
RETURN(1);
ELSEIF X > 10
RETURN(3);
ELSE
RETURN(0);
ENDSwitch
Überprüft einen Ausdruck anhand einer Liste von Fällen und gibt den entsprechenden Wert des ersten übereinstimmenden Falls zurück, mit einem Standardwert, falls nichts zutrifft.
SWITCH(expression, case1, value1, [case2, ...], [value2, ...], default_value)Beispiel:
SWITCH( MODBUSR(H, 168, UInt16),
0, 0,
0x0002, 1,
0x0004, 2,
0x0008, 3,
0x0010, 4,
0x0040, 5,
0x0800, 6,
NaN)
Schleife
LOOP / WHILE … wiederholen eine Reihe von Befehlen basierend auf einer angegebenen Bedingung, bis diese Bedingung nicht mehr erfüllt ist. CONTINUE … überspringt die Ausführung von Befehlen und fährt mit dem nächsten Zyklus fort. BREAK … beendet die Schleife.
Beispiel mit Bedingung am Anfang:
int i := 10;
while i > 0
i := i - 1;
if i > 5
continue;
else
break;
end
loopBeispiel mit Bedingung am Ende:
int i := 10;
do
i := i + i;
loop while i < 10NaN-Wert (not a number)
NaN kann als Wert zurückgegeben werden, falls der tatsächliche Wert nicht bekannt ist.
IF Temperature > 250
RETURN(NaN);Die Funktion ISNAN(expression) gibt TRUE zurück, wenn der Ausdruck keine Zahl ist.
ISNULL
Gibt true zurück, wenn der Parameter NULL ist, andernfalls false. Wird für String- und Bytearray-Typen verwendet. Beispiel: Wenn ein XML-Element nicht gefunden wird, ist der zurückgegebene Wert NULL und ISNULL gibt true zurück.
Die Syntax der Funktion lautet:
ISNULL(object)Sleep
Pausiert das Skript für eine angegebene Millisekundenanzahl. Nur in sehr spezifischen Fällen verwenden.
SLEEP(5);Kommentare
Neue Zeile beginnend mit dem Zeichen #.
# KommentarNumerische Literale
Hexadezimalzahlen
Ausdrücke können auch Hexadezimalzahlen interpretieren. Das Präfix 0x ist erforderlich, und der Rest ist nicht groß-/kleinschreibungssensibel.
0x0A = 10
0xA0A0 (41120)
0xa0a0 (41120)Binärzahlen
0b1010 = 10
0b10101010 (170)Mathematische Ausdrücke
+, -, *, /
(20.5 + 9.5) / 2 (15)Logische Ausdrücke
UND, ODER, !, =, !=, >, <
(!IsRaining OR (Wind>30))
MultiValueSwitchState != 2 (Not equal to 2)