Rozpoznání příkazu

Hodnoty lze s tímto blokem přečíst z textu. Ve vlastnostech je definován odpovídající vyhledávací vzor.

Obsah


Vstupy

Zkratka Krátký popis Popis
T Text Input Text příkazu.




Výstupy

Zkratka Krátký popis Popis Rozsah hodnot
Lv Last extracted value Poslední získaná hodnota




Vlastnosti

Krátký popis Popis Výchozí hodnota
Rozeznání příkazu Příznaky pro čtení hodnot:
\v = Hodnota,
\1 = Byte interpretovaný jako 1. byte výstupní hodnoty (\2, \3, ...),
\h = Hodnota interpretovaná hexadecimálně

Příznaky pro procházení textu:
\. = Libovolný znak,
\w = Libovolné slovo,
\# = Libovolné číslo,
\d = Číslice od 0 do 9.,
\m = Znak A-Z/a-z/0-9,
\a = Znak A-Z/a-z,
\s12 = Přeskočit 12 znaků,
\iText\i = Přeskoč za 'Text'

Zvláštní znaky:
\x = Hexadecimální číslo (např. 0x09),
\\ = Lomítko,
\t = Tab (0x09),
\b = Mezera (0x02) nebo Tab (0x09),
\r = Return/Návrat (0x0d),
\n = Nový řádek (0x0a)

Příklad:
Pro vyčtení hodnoty 15 ze zprávy temp:'15' použijte příkaz temp:'\v
-
Signed integer Pokud je zaškrtnuto, použijí se hodnoty \1, \2, \3 atd. s algebraickým znaménkem při rozpoznávání příkazů (Signed Integer). -




Příklad programování

Rozpoznání příkazu lze použít k navigaci v textu nebo zdrojovém textu a k získání hodnot.

Znaky použité k extrakci hodnoty:

\v = číselná hodnota

\1 = hodnota bytu interpretovaná jako první byte výstupu (\2, \3, ...)

- Pokud jsou přijatá data interpretována jako hexadecimální (např. "\x0A"), získá se jejich desítkový ekvivalent (v tomto příkladu 10). Tato metoda funguje také pro více hexadecimálních bajtů (např. "\x0A\x0B"). Po spojení těchto bajtů vznikne 32bitové celé číslo 0x0A0B a \2\1 vrátí 2571 v desítkové soustavě. Stejná hodnota, extrahovaná pomocí \1, dává v desítkové soustavě hodnotu 10.

- Pokud jsou přijatá data interpretována jako text, každý bajt reprezentuje znak ASCII. Například "Loxone" odpovídá znaku nového řádku s ASCII kódem 76.

- Data lze použít jako znaménkové celé číslo, pokud se zohlední správné pořadí bytů a v případě potřeby se provede rozšíření znaménka.

\h = hodnota interpretovaná jako hexadecimální číslo

- Pokud přijatá data jsou hexadecimální řetězec reprezentovaný jako text (např. "0A"), lze jej převést na jeho desítkový ekvivalent (v tomto příkladu 10).

- Tato metoda funguje také pro více hexadecimálních dat (např. "0A0B"). Při převodu z hexadecimálního na desítkový systém odpovídá "0A0B" číslu 2571.

Znaky pro navigaci v textu:

\. = jakýkoli znak

\w = jakékoli slovo

\# = jakékoli číslo

\d = číslice 0-9

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

\a = znak A-Z/a-z

\s12 = přeskočit 12 znaků
- Například \s12 přeskočí 12 znaků, když přijatá data jsou textový řetězec.

- Pokud přijatá data jsou hexadecimální řetězec reprezentovaný escape sekvencemi (např. \xFE\xFF\x00\x12\xA0\xB0\xC1\xD2\xE3\xF4\x11\x16\x17), pak \s12 přeskočí 12 hexadecimálních bajtů. V tomto případě to skočí za \x16, čímž efektivně přeskočí celkem 48 textových znaků (protože každý hexadecimální bajt je reprezentován čtyřmi textovými znaky).

\iText\i = přeskočit za "Text"

Speciální znaky:

\x = Hexadecimální číslo (např. 0x09)

\\ = Lomeno

\t = Tabulátor (0x09)

\b = Mezera (0x02) nebo Tabulátor (0x09)

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

<b>\n</b> = Nový řádek (0x0a)

V následujícím příkladu chceme získat aktuální cenu zemního plynu:

Protože text "Natural Gas" je konstantní, můžeme přeskočit na tuto pozici v textu. Abychom získali aktuální cenu, musíme přeskočit údaj o čase. Existuje několik možností, jak to udělat:

Varianta 1 přes \d\a
S \d jednotlivými číslicemi a s \a jednotlivými znaky lze přeskočit:

Variant 2 přes \#\w
S \# jako číslem a s \w jako libovolným slovem lze přeskočit:

Variant 3 přes \s8
Vzhledem k tomu, že v tomto příkladu bude čas vždy mít stejný počet číslic a znaků, mohou být přeskočeny pomocí \s8: