Noțiuni de bază
Sintaxa de bază a limbajului de scripting TapHome — atribuire, algoritmi pe mai multe linii, valori returnate, variabile, IF/ELSE, SWITCH, bucle, NaN, comentarii, literali numerici și expresii matematice/logice.
Atribuire
Mu := Se + 2;Algoritm pe mai multe linii
Liniile se separă prin punct și virgulă.
Last := Current;
Current := 0;Valoarea returnată
- Rezultatul ultimei linii de cod
- RETURN(expression) oprește execuția algoritmului și returnează conținutul din paranteze
(Co2 > 800) AND (Wind < 10);
equals:
RETURN((CO2 > 800) and (Wind < 10));Variabilă temporară
Există numai pe durata unei singure execuții a scriptului.
VAR X := 5;Instrucțiunea IF
Stil Excel
IF(logical_expression, value_if_true, value_if_false);
IF(logical_expression, value_if_true);Stil pe mai multe linii
IF X < 5
RETURN(1);
ELSEIF X > 10
RETURN(3);
ELSE
RETURN(0);
ENDSwitch
Compară valoarea unei expresii cu o listă de cazuri și returnează valoarea corespunzătoare primului caz care se potrivește; dacă niciun caz nu se potrivește, returnează valoarea implicită.
SWITCH(expression, case1, value1, [case2, ...], [value2, ...], default_value)Exemplu:
SWITCH( MODBUSR(H, 168, UInt16),
0, 0,
0x0002, 1,
0x0004, 2,
0x0008, 3,
0x0010, 4,
0x0040, 5,
0x0800, 6,
NaN)
Bucla
LOOP / WHILE … repetă o serie de comenzi cât timp condiția specificată este adevărată. CONTINUE … sare peste comenzile rămase din ciclul curent și trece la ciclul următor. BREAK … încheie bucla.
Exemplu cu condiția la început:
int i := 10;
while i > 0
i := i - 1;
if i > 5
continue;
else
break;
end
loopExemplu cu condiția la sfârșit:
int i := 10;
do
i := i + i;
loop while i < 10Valoarea NaN (not a number)
NaN se poate returna ca valoare atunci când valoarea reală nu este cunoscută.
IF Temperature > 250
RETURN(NaN);Funcția ISNAN(expression) returnează TRUE dacă expresia nu este un număr.
ISNULL
Returnează true dacă parametrul este NULL, false în caz contrar. Se folosește pentru tipurile String și Bytearray. Exemplu: dacă elementul XML nu este găsit, ISNULL returnează true pentru valoarea returnată.
Sintaxa funcției:
ISNULL(object)Sleep
Pune scriptul în pauză pentru numărul specificat de milisecunde. Folosiți-l numai în cazuri foarte speciale.
SLEEP(5);Comentarii
O linie nouă care începe cu caracterul #.
# commentLiterali numerici
Numere hexazecimale
Expresiile pot interpreta și numere hexazecimale. Prefixul 0x este obligatoriu, iar în rest nu contează dacă folosiți litere mari sau mici.
0x0A = 10
0xA0A0 (41120)
0xa0a0 (41120)Numere binare
0b1010 = 10
0b10101010 (170)Expresii matematice
+, -, *, /
(20.5 + 9.5) / 2 (15)Expresii logice
AND, OR, !, =, !=, >, <
(!IsRaining OR (Wind>30))
MultiValueSwitchState != 2 (Not equal to 2)