TapHome

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

Switch

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

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
loop

Esempio con condizione alla fine:

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

Valore 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 #

# commento

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