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, il riconoscimento del comando utilizza i valori \1, \2, \3, ecc. con prefisso (Signed Integer). | - |
Esempio di programmazione↑
Il riconoscimento dei comandi può essere utilizzato per navigare in un testo o in un testo sorgente e per recuperare i valori.
Caratteri utilizzati per estrarre un valore:
\v = volore numerico
\1= valore del byte interpretato come 1° byte dell'uscita (\2, \3, ...)
- Se i dati ricevuti vengono interpretati come esadecimali (e.s., "\x0A") si ottiene l'equivalente decimale (10 in questo esempio). Questo metodo funziona anche per byte esadecimali multipli (e.g., "\x0A\x0B"). Quando vengono combinati, questi byte formano l'intero a 32 bit 0x0A0B, e \2\1 restituisce 2571 in decimale. Lo stesso valore, se 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 Line Feed con codice ASCII 76.
- I dati possono essere utilizzati come numeri interi 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 (e.s., “0A”), possono essere convertiti nel loro equivalente decimale (10 in questo esempio).
- Questo metodo funziona anche per i dati esadecimali multipli (ad esempio, “0A0B”). Se convertito da esadecimale a decimale, “0A0B” corrisponde a 2571.
Caratteri per navigare nel testo:
\. = qualsiasi carattere
\w = qualsiasi parola
\# = qualsiasi numero
\d = cifre 0-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 stringhe 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 a \x16, saltando di fatto un totale di 48 caratteri di testo (poiché ogni byte esadecimale è rappresentato da quattro caratteri di testo).
\iText\i = salta dietro a “Testo”
Caratteri speciali:
\x= Numero esadecimale (ad es. 0x09)
\\ = Slash
\t = Tab (0x09)
\b = Spazio (0x02) or Tab (0x09)
\r = Return (0x0d)
\n = Nuova linea(0x0a)
Nell'esempio seguente, vogliamo sempre estrarre il prezzo corrente del gas naturale:
Poiché l'indicazione "Gas naturale" è sempre la stessa, saltiamo a questa posizione nel testo. Per ignorare l'indicazione dell'ora e recuperare il prezzo, esistono diverse possibilità:
Variante 1 via \d\a
Con \d le cifre singole e con \a i caratteri singoli possono essere saltati:
Variante 2 via \#\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: