TapHome

Alapok

A TapHome szkriptnyelv alapvető szintaxisa — összekapcsolás, többsoros algoritmusok, visszatérési értékek, változók, IF/ELSE, SWITCH, ciklusok, NaN, megjegyzések, numerikus literálok, valamint matematikai és logikai kifejezések.

Összekapcsolás

Mu := Se + 2;

Többsoros algoritmus

Minden sort pontosvessző választ el.

Last := Current;
Current := 0;

Visszatérési érték

  • Az utolsó sor eredménye
  • A RETURN(expression) leállítja az algoritmus végrehajtását, és a zárójelek között található kifejezés értékét adja vissza
(Co2 > 800) AND (Wind < 10);
equals:
RETURN((CO2 > 800) and (Wind < 10));

Ideiglenes változó

Csak egy szkript‑végrehajtás idejére él.

VAR X := 5;

IF feltétel

Excel-stílus

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

Többsoros stílus

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

SWITCH

Egy kifejezést egy feltétellista alapján tesztel, és az első egyező esethez tartozó értéket adja vissza, illetve egy alapértelmezett értéket, ha egyik eset sem felel meg.

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

Példa:

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

Ciklus

A LOOP / WHILE … egy adott feltétel alapján ismétli egy parancssorozat végrehajtását. A ciklus addig fut, amíg a feltétel igaz. A CONTINUE … a hátralévő parancsok végrehajtását kihagyja, és a következő iterációra lép. A BREAK … kilép a ciklusból.

Példa: feltétel ellenőrzése a ciklus elején:

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

Példa: feltétel ellenőrzése a ciklus végén:

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

NaN (nem szám) érték

NaN érték akkor adható vissza, ha a valós érték nem ismert.

IF Temperature > 250 
  RETURN(NaN);

Az ISNAN(expression) függvény TRUE-t ad vissza, ha a kifejezés nem szám.

ISNULL

TRUE-t ad vissza, ha a paraméter NULL, ellenkező esetben FALSE. String és Bytearray típusokra használható. Példa: ha egy XML‑elem nem található, a visszatérési érték NULL, és az ISNULL igaz lesz rá.

A függvény szintaxisa:

ISNULL(object)

Sleep

A szkriptet késlelteti milliszekundumban megadott idővel. Csak nagyon specifikus esetekben használható.

SLEEP(5);

Megjegyzések

Új sor # jellel kezdve.

# comment

Numerikus literálok

Hexadecimális számok

A kifejezések hexadecimális számokat is értelmezhetnek. A prefix 0x kötelező, a maradék nem case‑sensitive.

0x0A = 10

0xA0A0   (41120)
0xa0a0   (41120)

Bináris számok

0b1010 = 10

0b10101010   (170)

Matematikai kifejezések

+, -, *, /

(20.5 + 9.5) / 2    (15)

Logikai kifejezések

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

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