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 de waarden \1, \2, \3, enz. gebruikt met algebraïsch teken in de opdrachtherkenning (Signed Integer). | - |
Programmatie voorbeeld↑
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 "\x0A\x0B"). Wanneer deze bytes gecombineerd worden, vormen ze het 32-bits gehele getal 0x0A0B, en \2\1 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 bijvoorbeeld 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
\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 is die wordt weergegeven met escape-reeksen (bijvoorbeeld \xFExFFx00x12xA0xB0xC1xD2xE3xF4x11x16x17), dan zal \s12 12 hexabytes overslaan. In dit geval springt het achter \x16, waardoor in totaal 48 tekstkarakters worden overgeslagen (omdat elke hexabyte wordt weergegeven door vier tekstkarakters).
\iTekst\i = spring achter "Tekst"
Speciale tekens:
\x = Hexadecimaal getal (bijv. 0x09)
/ = Schuine streep
\t = Tab (0x09)
\b = Spatie (0x02) of Tab (0x09)
<b>\r</b> = Return (0x0d)
<b>\n</b> = 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 \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: