Bevelsherkenning

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

Inhoudsopgave


Ingangen↑

AfkortingKorte beschrijvingBeschrijving
TText InputBevelstekst.




Uitgangen↑

AfkortingKorte beschrijvingWaardebereik
LvLast extracted value∞




Eigenschappen↑

Korte beschrijvingBeschrijvingStandaardwaarde
CommandoherkenningKarakters 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,
iTexti = 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 voortekenIndien aangevinkt worden de waarden 1, 2, 3, enz. gebruikt met algebraïsch teken in de opdrachtherkenning (Signed Integer).-



Programmeervoorbeeld↑

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

Tekens die worden gebruikt om een waarde te extraheren:

v = numerieke waarde

1 = waarde van byte geïnterpreteerd als eerste byte van de uitgang (2, 3, ...)

- Als de ontvangen gegevens als hexadecimaal worden geïnterpreteerd (bijvoorbeeld "x0A"), wordt het decimale equivalent (10 in dit voorbeeld) verkregen. Deze methode werkt ook voor meerdere hexadecimale bytes (bijvoorbeeld "x0Ax0B"). Wanneer deze bytes gecombineerd worden, vormen ze het 32-bits gehele getal 0x0A0B, en 21 geeft 2571 in decimaal. Dezelfde waarde, geëxtraheerd met 1, resulteert in 10 in decimaal.

- Als de ontvangen gegevens als tekst worden geïnterpreteerd, vertegenwoordigt elke byte een ASCII-karakter. Bijvoorbeeld, "Loxone" begint met een teken met de ASCII-code 76.

- De gegevens kunnen worden gebruikt als een signed integer door rekening te houden met de juiste bytevolgorde en indien nodig sign-extensie toe te passen.

h = waarde geïnterpreteerd als hexadecimaal getal

- Als de ontvangen gegevens een hexadecimale tekenreeks zijn die als tekst wordt weergegeven (bijvoorbeeld "0A"), kan deze worden omgezet naar het decimale equivalent (10 in dit voorbeeld).

- Deze methode werkt ook voor meerdere hexadecimale gegevens (bijv. "0A0B"). Wanneer omgezet van hex naar decimaal, komt "0A0B" overeen met 2571.

Karakters om door de tekst te navigeren:

. = elk teken

w = elk woord

# = een willekeurig getal

Een punt en een komma worden herkend als onderdeel van het getal. Het getal moet worden gescheiden door een spatie, letters of een speciaal teken om als een op zichzelf staand/onafhankelijk getal te worden herkend.

d = cijfers 0-9

m = teken A-Z/a-z/0-9

a = teken A-Z/a-z

s12 = sla 12 tekens over
- Bijvoorbeeld, s12 slaat 12 tekens over wanneer de ontvangen gegevens een tekstreeks zijn.

- Als de ontvangen gegevens een hex-string zijn die wordt weergegeven met escape-reeksen (bijvoorbeeld xFExFFx00x12xA0xB0xC1xD2xE3xF4x11x16x17), dan zal s12 12 hexbytes overslaan. In dit geval springt het achter x16, waardoor in totaal 48 tekstkarakters worden overgeslagen (omdat elke hexbyte wordt weergegeven door vier tekstkarakters).

iTeksti = spring achter "Tekst"

Speciale tekens:

x = Hexadecimaal getal (bijv. 0x09)

\ = Backslash

t = Tab (0x09)

b = Spatie (0x02) of Tab (0x09)

⧵r = Return (0x0d)

⧵n = Newline (0x0a)

In het volgende voorbeeld willen we de huidige prijs van aardgas opvragen:

Aangezien de tekst "Aardgas" constant is, kunnen we naar deze positie in de tekst springen. Om de huidige prijs te extraheren, moeten we de tijdsaanduiding overslaan. Er zijn verschillende opties om dit te doen:

Variant 1 via da
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: