TapHome

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

Switch

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)
Exemplu SWITCH

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
loop

Exemplu cu condiția la sfârșit:

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

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

# comment

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