Riconoscimento comandi

Con questo blocco possono essere letti dei valori da un testo. Il pattern di ricerca viene definito nelle proprietà.

Contenuto


Ingressi

Alias Descrizione breve Descrizione
T Text Input Testo del comando.




Uscite

Alias Descrizione breve Descrizione Campo di valore
Lv Last extracted value Ultimo valore estratto




Proprietà

Descrizione breve Descrizione Valore predefinito
Riconoscimento comando Caratteri per la lettura di un valore:
\v = valore,
\1 = byte interpretato come 1° Byte del valore di output (\2, \3, ...),
\h = valore interpretato come numero esadecimale

Caratteri per navigare nel testo:
\. = qualsiasi segno,
\w = qualsiasi parola,
\# = qualsiasi numero,
\d = numero 0-9,
\m = caratteri A-Z/a-z/0-9,
\a = caratteri A-Z/a-z,
\s12 = salta 12 caratteri,
\iText\i = salta a 'Testo'

Caratteri speciali:
\x = numero esadecimale (ad es. 0x09),
\\= barra,
\t = tab (0x09),
\b = spazio (0x02) o Tab (0x09),
\r = return (0x0d),
\n = newline (0x0a)
-
Interpretazione valore con caratteri Se selezionato, i valori \1, \2, \3, ecc. vengono utilizzati con segno algebrico nel riconoscimento dei comandi (Signed Integer). -




Esempio di programmazione

Il riconoscimento dei comandi può essere utilizzato per navigare in un testo o testo sorgente e per recuperare valori.

Caratteri utilizzati per estrarre un valore:

\v = valore numerico

\1 = valore del byte interpretato come primo byte dell'uscita (\2, \3, ...)

- Se i dati ricevuti vengono interpretati come esadecimali (ad esempio, “\x0A”), si ottiene l'equivalente decimale (10 in questo esempio). Questo metodo funziona anche per più byte esadecimali (ad esempio, “\x0A\x0B”). Quando vengono combinati, questi byte formano l'intero a 32 bit 0x0A0B, e \2\1 restituisce 2571 in decimale. Lo stesso valore, quando viene estratto con \1, risulta 10 in decimale.

- Se i dati ricevuti vengono interpretati come testo, ogni byte rappresenta un carattere ASCII. Ad esempio, "Loxone" corrisponde al carattere di avanzamento riga con un codice ASCII di 76.

- I dati possono essere utilizzati come un intero con segno considerando l'ordine corretto dei byte e applicando l'estensione del segno se necessario.

\h = valore interpretato come numero esadecimale

- Se i dati ricevuti sono una stringa esadecimale rappresentata come testo (ad esempio, "0A"), può essere convertita nel suo equivalente decimale (10 in questo esempio).

- Questo metodo funziona anche per più dati esadecimali (ad esempio, "0A0B"). Quando convertito da esadecimale a decimale, "0A0B" corrisponde a 2571.

Caratteri per navigare attraverso il testo:

\. = qualsiasi carattere

\w = qualsiasi parola

\# = qualsiasi numero

\d = cifre da 0 a 9

\m = carattere A-Z/a-z/0-9

\a = carattere A-Z/a-z

\s12 = salta 12 caratteri
- Ad esempio, \s12 salta 12 caratteri quando i dati ricevuti sono una stringa di testo.

- Se i dati ricevuti sono una stringa esadecimale rappresentata con sequenze di escape (ad esempio, \xFE\xFF\x00\x12\xA0\xB0\xC1\xD2\xE3\xF4\x11\x16\x17), allora \s12 salterà 12 byte esadecimali. In questo caso, salterà dietro \x16, saltando di fatto un totale di 48 caratteri di testo (poiché ogni byte esadecimale è rappresentato da quattro caratteri di testo).

\iText\i = saltare dietro a “Text”

Caratteri speciali:

\x = Numero esadecimale (ad esempio 0x09)

\\ = Slash

\t = Tab (0x09)

\b = Spazio (0x02) o Tab (0x09)

<b>\r</b> = Return (0x0d)

<b>\n</b> = Nuova Linea(0x0a)

Nell'esempio seguente, vogliamo estrarre il prezzo attuale del gas naturale:

Poiché il testo "Gas Naturale" è costante, possiamo saltare direttamente a questa posizione nel testo. Per estrarre il prezzo attuale, dobbiamo saltare l'indicazione del tempo. Ci sono diverse opzioni per farlo:

Variante 1 tramite \d\a
Con \d possono essere saltate singole cifre e con \a singoli caratteri:

Variante 2 tramite \#\w
Con \# si può ignorare un numero e con \w qualsiasi parola:

Variante 3 tramite \s8
Siccome in questo esempio l'ora avrà sempre lo stesso numero di cifre e caratteri, questi possono essere saltati con \s8: