Bevelsherkenning

Met deze bouwsteen kunnen waarden uit een tekst worden uitgelezen. Het overeenkomstige zoekpatroon wordt gedefinieerd in de eigenschappen.

Inhoudsopgave


Ingangen

Contractie Korte beschrijving Beschrijving
T Text Input Bevelstekst.




Uitgangen

Contractie Korte beschrijving Beschrijving Waardebereik
Lv Last extracted value Laatst opgehaalde waarde




Eigenschappen

Korte beschrijving Beschrijving Standaardwaarde
Commando erkenning Karakters voor het uitlezen van een waarde:
\v = Waarde,
\1 = Byte geïnterpreteerd als 1. Byte van de uitgangswaarde (2, 3, ....),
\h = Waarde geïnterpreteerd als hexadecimaal getal.

Karakters om door de tekst te navigeren:
\. = Elk karakter,
\w = Eender welk woord,
\# = Eender welk nummer,
\d = Cijfer 0-9,
\m = Karakter A-Z/a-z/0-9,
\a = Karakter A-Z/a-z,
\s12 = 12 karakters overslaan,
\iText\i = Spring naar 'tekst'

Speciale tekens:
\x = Hexadecimaal getal (bijv. 0x09),
\\ = Slash,
\t = Tab (0x09),
\b = Space (0x02) of Tab (0x09),
\r = Return (0x0d),
\n = Newline (0x0a)
-
Waarde interpretatie met voorteken Indien aangevinkt worden in de bevelsherkenning de waarden \1, \2, \3, enz. met een voorteken gebruikt (Signed integer). -




Programmatie voorbeeld

Commandoherkenning kan worden gebruikt om te navigeren in een tekst of brontekst en om waarden op te halen.

Tekens gebruikt om een waarde te extraheren:
\v = numerieke waarde
\1 = waarde van byte geïnterpreteerd als 1e byte van de uitgang (\2, \3, ...)
- Als de ontvangen gegevens als hexadecimaal worden geïnterpreteerd (bijv, "\x0A"), dan wordt het decimale equivalent (10 in dit voorbeeld) verkregen. Deze methode werkt ook voor meerdere hexadecimale bytes (bijvoorbeeld "\x0A\x0B"). Wanneer deze bytes gecombineerd worden, vormen ze het 32-bits gehele getal 0x0A0B, en \2\1 geeft 2571 in decimaal. Dezelfde waarde die met \1 wordt geëxtraheerd, resulteert in 10 in decimaal.
- Als de ontvangen gegevens als tekst worden geïnterpreteerd, vertegenwoordigt elke byte een ASCII-teken. Bijvoorbeeld: "Loxone" komt overeen met het teken Line Feed met een ASCII-code van 76.
- De gegevens kunnen worden gebruikt als een gesigneerd geheel getal door de juiste bytevolgorde in acht te nemen en indien nodig tekenuitbreiding toe te passen.
\h = waarde geïnterpreteerd als hexadecimaal getal
- Als de ontvangen gegevens een hexadecimale tekenreeks zijn die wordt weergegeven als tekst (bijv, "0A"), kan deze worden geconverteerd naar het decimale equivalent (10 in dit voorbeeld).
- Deze methode werkt ook voor meervoudige hexdata (bijvoorbeeld "0A0B"). Bij omzetting van hex naar decimaal komt "0A0B" overeen met 2571.

Tekens om door de tekst te navigeren:
. = elk teken
\w = elk woord
\# = een willekeurig getal
\d = cijfers 0-9
\m = teken A-Z/a-z/0-9
\a = teken A-Z/a-z
\s12 = 12 tekens overslaan
- Bijvoorbeeld, \s12 slaat 12 tekens over als de ontvangen gegevens een tekststring is.
- Als de ontvangen gegevens een hex-tekenreeks is die wordt weergegeven met escape-reeksen (bijv, \b>\s12 worden 12 hexabytes overgeslagen. In dit geval springt het achter \x16, waardoor in totaal 48 tekstkarakters worden overgeslagen (omdat elke hexabyte wordt vertegenwoordigd door vier tekstkarakters).
\iText\i = springen achter "Text"

Speciale tekens:
\x = hexadecimaal getal (bijv.g. 0x09)
\t = Slash
\t = Tab (0x09)
\b = Spatie (0x02) of Tab (0x09)
\r = Return (0x0d)
\n = Newline (0x0a)

In het volgende voorbeeld willen we steeds de huidige aardgasprijs ophalen:

Aangezien de aanduiding "Aardgas" steeds dezelfde is, springen we naar deze positie in de tekst. Om de tijdsaanduiding over te slaan en de prijs te laten ophalen, zijn er verschillende mogelijkheden:

Variant 1 via \d\a
Met \d enkele cijfers en met \a enkele tekens kunnen worden overgeslagen:

Variant 2 via \w
Met \een getal en met \w kan elk woord worden overgeslagen:

Variant 3 via \s8
Omdat in dit voorbeeld de tijd altijd hetzelfde aantal cijfers en tekens heeft, kunnen deze met \s8 worden overgeslagen: