TapHome

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);
END

Switch

Ü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)
SWITCH Example

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
loop

Beispiel mit Bedingung am Ende:

int i := 10;
do
    i := i + i;
loop while i < 10

NaN-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 #.

# Kommentar

Numerische 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)