Nozioni di base
Sintassi di base del linguaggio di scripting TapHome — assegnazione, algoritmi multilinea, valori restituiti, variabili, IF/ELSE, SWITCH, cicli, NaN, commenti, letterali numerici ed espressioni matematiche/logiche.
Assegnazione
Mu := Se + 2;Algoritmo multilinea
Ogni riga è separata dal punto e virgola.
Last := Current;
Current := 0;Valore restituito
- Risultato dell’ultima riga di codice
- RETURN(expression) interrompe l’esecuzione dell’algoritmo e restituisce il contenuto tra parentesi
(Co2 > 800) AND (Wind < 10);
equals:
RETURN((CO2 > 800) and (Wind < 10));Variabile temporanea
Esiste solo durante una singola esecuzione dello script.
VAR X := 5;Clausola IF
Stile Excel
IF(logical_expression, value_if_true, value_if_false);
IF(logical_expression, value_if_true);Stile multilinea
IF X < 5
RETURN(1);
ELSEIF X > 10
RETURN(3);
ELSE
RETURN(0);
ENDSwitch
Verifica un’espressione rispetto a un elenco di casi e restituisce il valore corrispondente al primo caso che corrisponde, con un valore di default se nessun altro caso è soddisfatto.
SWITCH(expression, case1, value1, [case2, ...], [value2, ...], default_value)Esempio:
SWITCH( MODBUSR(H, 168, UInt16),
0, 0,
0x0002, 1,
0x0004, 2,
0x0008, 3,
0x0010, 4,
0x0040, 5,
0x0800, 6,
NaN)
Loop
LOOP / WHILE … ripete una serie di comandi finché una condizione specificata è soddisfatta. CONTINUE … salta l’esecuzione dei comandi rimanenti e passa al ciclo successivo. BREAK … termina il ciclo.
Esempio con condizione all’inizio:
int i := 10;
while i > 0
i := i - 1;
if i > 5
continue;
else
break;
end
loopEsempio con condizione alla fine:
int i := 10;
do
i := i + i;
loop while i < 10Valore NaN (not a number)
NaN può essere restituito come valore nel caso in cui il valore reale non sia noto.
IF Temperature > 250
RETURN(NaN);La funzione ISNAN(expression) restituisce TRUE se l’espressione non è un numero.
ISNULL
Restituisce true se il parametro è NULL, altrimenti false. Usato per i tipi String e Bytearray. Esempio: se l’elemento XML non viene trovato, il valore restituito è NULL, quindi il risultato della funzione è TRUE.
La sintassi della funzione è:
ISNULL(object)Sleep
Mette in pausa lo script per un numero di millisecondi. Usare solo in casi molto specifici.
SLEEP(5);Commenti
Nuova riga che inizia con il carattere #
# commentoLetterali numerici
Numeri esadecimali
Le espressioni possono interpretare anche numeri esadecimali. Il prefisso 0x è obbligatorio e il resto non è case-sensitive.
0x0A = 10
0xA0A0 (41120)
0xa0a0 (41120)Numeri binari
0b1010 = 10
0b10101010 (170)Espressioni matematiche
+, -, *, /
(20.5 + 9.5) / 2 (15)Espressioni logiche
AND, OR, !, =, !=, >, <
(!IsRaining OR (Wind>30))
MultiValueSwitchState != 2 (diverso da 2)