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, budou při rozpoznávání příkazů hodnoty \1, \2, \3, atd. použity se znaménky (Signed Integer) -




Příklad programování

Rozeznání příkazů lze použít k navigaci v textu nebo zdrojovém textu a k načítání hodnot.

Znaky použité k extrakci hodnoty:

\v = číselná hodnota

\1 = hodnota byte interpretovaná jako 1. 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 bytů (např. „\x0A\x0B“). Po spojení těchto bytů 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, představuje každý byte jeden znak ASCII. Například „Loxone“ odpovídá znaku Line Feed s kódem ASCII 76.

- The data can be used as a signed integer by considering the correct byte order and applying sign extension if necessary.

\h = hodnota interpretována jako hexadecimální číslo

- Pokud jsou přijatá data hexadecimálním řetězcem reprezentovaným jako text (např. „0A“), lze je převést na jejich desítkový ekvivalent (v tomto příkladu 10).

- Tato metoda funguje i pro vícenásobná hexadecimální data (např. „0A0B“). Při převodu z hexadecimálního na desítkový systém odpovídá „0A0B“ hodnotě 2571.



Znaky pro navigaci v textu:

\. = jakýkoli znak

\w = jakékoliv slovo

\# = jakékoliv čí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ů, pokud jsou přijatá data textovým řetězcem.

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

\iText\i = skok za „Text“



Speciální znaky:

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

\\ = Lomítko

\t = Tab (0x09)

\b = Mezera(0x02) nebo Tab (0x09)

\r = Return (0x0d)

\n = Newline (0x0a)

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

Protože označení "Natural Gas" je vždy stejné, přejdeme v textu na tuto pozici. Chcete-li přeskočit časovou indikaci, aby se načetla cena, existují různé možnosti:

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

Varianta 2 přes \#\w
Pomocí \# lze vynechat číslo a pomocí \w libovolné slovo:

Varianta 3 pomocí \s8
Protože v tomto příkladu bude mít čas vždy stejný počet číslic a znaků, lze je pomocí \s8 vynechat: