TapHome

Osnove

Osnovna sintaksa skriptnog jezika TapHome: dodjela, višeredni algoritmi, povratne vrijednosti, varijable, IF/ELSE, SWITCH, petlje, NaN, komentari, brojevni literali te matematički i logički izrazi.

Dodjela

Mu := Se + 2;

Višeredni algoritam

Redci se odvajaju točkom sa zarezom.

Last := Current;
Current := 0;

Povratna vrijednost

  • Rezultat posljednjeg retka koda
  • RETURN(expression) zaustavlja izvođenje algoritma i vraća sadržaj u zagradama
(Co2 > 800) AND (Wind < 10);
equals:
RETURN((CO2 > 800) and (Wind < 10));

Privremena varijabla

Postoji samo tijekom jednog izvođenja skripte.

VAR X := 5;

Naredba IF

Stil kao u Excelu

IF(logical_expression, value_if_true, value_if_false);
IF(logical_expression, value_if_true);

Višeredni stil

IF X < 5
  RETURN(1);
ELSEIF X > 10
  RETURN(3);
ELSE
  RETURN(0);
END

Switch

Uspoređuje izraz s popisom slučajeva i vraća odgovarajuću vrijednost prvog slučaja koji se podudara, a ako se nijedan ne podudara, vraća zadanu vrijednost.

SWITCH(expression, case1, value1, [case2, ...], [value2, ...], default_value)

Primjer:

SWITCH( MODBUSR(H, 168, UInt16),
  0, 0,
  0x0002, 1,
  0x0004, 2,
  0x0008, 3,
  0x0010, 4,
  0x0040, 5,
  0x0800, 6,
  NaN)
Primjer naredbe SWITCH

Petlja

LOOP / WHILE … ponavlja niz naredbi dok je zadani uvjet ispunjen. CONTINUE … preskače preostale naredbe u trenutačnom ciklusu i nastavlja sa sljedećim ciklusom. BREAK … prekida petlju.

Primjer s uvjetom na početku:

int i := 10;
while i > 0
    i := i - 1;
    
    if i > 5
        continue;
    else
        break;
    end
loop

Primjer s uvjetom na kraju:

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

Vrijednost NaN (nije broj)

NaN se može vratiti kao vrijednost kada stvarna vrijednost nije poznata.

IF Temperature > 250 
  RETURN(NaN);

Funkcija ISNAN(expression) vraća TRUE ako izraz nije broj.

ISNULL

Vraća true ako je parametar NULL, inače false. Koristi se za vrste String i Bytearray. Primjer: ako XML element nije pronađen, povratna vrijednost je NULL.

Sintaksa funkcije je:

ISNULL(object)

Sleep

Pauzira skriptu na zadani broj milisekundi. Koristite samo u vrlo posebnim slučajevima.

SLEEP(5);

Komentari

Komentar je redak koji počinje znakom #.

# comment

Brojevni literali

Heksadecimalni brojevi

U izrazima se mogu koristiti i heksadecimalni brojevi. Prefiks 0x je obavezan, a za ostatak nije važno jesu li slova velika ili mala.

0x0A = 10

0xA0A0   (41120)
0xa0a0   (41120)

Binarni brojevi

0b1010 = 10

0b10101010   (170)

Matematički izrazi

+, -, *, /

(20.5 + 9.5) / 2    (15)

Logički izrazi

AND, OR, !, =, !=, >, <

(!IsRaining OR (Wind>30))
MultiValueSwitchState != 2 (Not equal to 2)