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);
ENDSWITCH
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)
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
loopPélda: feltétel ellenőrzése a ciklus végén:
int i := 10;
do
i := i + i;
loop while i < 10NaN (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.
# commentNumerikus 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)