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: