Befehlserkennung

Mit diesem Baustein können Werte aus einem Text ausgelesen werden. Das entsprechende Suchmuster wird in den Eigenschaften festgelegt.

Inhaltsverzeichnis


Eingänge

Kürzel Kurzbeschreibung Beschreibung
T Text Input Befehlstext.




Ausgänge

Kürzel Kurzbeschreibung Beschreibung Wertebereich
Lv Last extracted value Zuletzt ausgelesener Wert




Eigenschaften

Kurzbeschreibung Beschreibung Standardwert
Befehlserkennung Zeichen zum Auslesen eines Wertes:
\v = Wert,
\1 = Byte interpretiert als 1. Byte des Ausgabewertes (\2, \3, ...),
\h = Wert interpretiert als hexadezimale Zahl

Zeichen zum Navigieren durch den Text:
\. = Irgendein Zeichen,
\w = Irgendein Wort,
\# = Irgendeine Nummer,
\d = Ziffer 0-9,
\m = Zeichen A-Z/a-z/0-9,
\a = Zeichen A-Z/a-z,
\s12 = 12 Zeichen überspringen,
\iText\i = Springe zu 'Text'

Sonderzeichen:
\x = Hexadezimale Zahl (z.B. 0x09),
\\ = Slash,
\t = Tab (0x09),
\b = Space (0x02) oder Tab (0x09),
\r = Return (0x0d),
\n = Newline (0x0a)
-
Werteinterpretation mit Vorzeichen Wenn angehakt, werden in der Befehlserkennung die Werte \1, \2, \3, usw. mit Vorzeichen verwendet (Signed Integer). -




Beispielprogrammierung

Mit der Befehlserkennung kann in einem Text bzw. Quelltext navigiert und Werte ausgelesen werden.

Zeichen zum Auslesen eines Wertes:
\v = numerischer Wert
\1 = Byte interpretiert als 1. Byte des Ausgabewertes (\2, \3, ...)
- Wenn die empfangenen Daten als hexadezimal interpretiert werden (z. B. „\x0A“), erhält man das dezimale Äquivalent (10 in diesem Beispiel). Diese Methode funktioniert auch für mehrere hexadezimale Bytes (z. B. „\x0A\x0B“). Wenn diese Bytes kombiniert werden, bilden sie die 32-Bit-Ganzzahl 0x0A0B, und \2\1 gibt 2571 in Dezimalzahlen zurück. Derselbe Wert, wenn er mit \1 extrahiert wird, ergibt 10 in Dezimalzahlen.
- Wenn die empfangenen Daten als Text interpretiert werden, stellt jedes Byte ein ASCII-Zeichen dar. Beispielsweise entspricht „Loxone“ dem Line Feed-Zeichen mit dem ASCII-Code 76.
- Die Daten können als vorzeichenbehaftete Ganzzahl verwendet werden, indem die korrekte Byte-Reihenfolge berücksichtigt und gegebenenfalls eine Vorzeichenerweiterung angewandt wird.
= Wert, der als Hexadezimalzahl interpretiert wird
- Wenn es sich bei den empfangenen Daten um eine als Text dargestellte Hex-Zeichenkette handelt (z. B., „0A"), kann sie in ihr dezimales Äquivalent (10 in diesem Beispiel) umgewandelt werden.
- Diese Methode funktioniert auch für mehrere Hex-Daten (z. B. ‚0A0B‘). Bei der Umwandlung von Hex in Dezimal entspricht „0A0B“ 2571.

Zeichen zur Navigation durch den Text:
\. = beliebiges Zeichen
\w = beliebiges Wort
\# = beliebige Zahl
\d = Ziffern 0-9
\m = Zeichen A-Z/a-z/0-9< br>\a = Zeichen A-Z/a-z
\s12 = 12 Zeichen überspringen
- Zum Beispiel überspringt \s12 12 Zeichen, wenn die empfangenen Daten eine Textzeichenfolge sind.
- Wenn die empfangenen Daten eine Hex-Zeichenkette sind, die mit Escape-Sequenzen dargestellt wird (z. B., \xFE\xFF\x00\x12\xA0\xB0\xC1\xD2\xE3\xF4\x11\x16\x17), dann überspringt \s12 12 Hex-Bytes. In diesem Fall springt es hinter \x16, wodurch insgesamt 48 Textzeichen übersprungen werden (da jedes Hex-Byte durch vier Textzeichen repräsentiert wird).
\iText\i = Sprung hinter „Text“

Sonderzeichen:
\x = Hexadezimalzahl (z. g. 0x09)
\\ = Schrägstrich
\t = Tab (0x09)
\b = Leerzeichen (0x02) oder Tabulator (0x09)
\r = Return (0x0d)
\n = Newline (0x0a)

Im folgenden Beispiel möchten wir immer den aktuellen Erdgaspreis herausfiltern:

Da die Angabe "Natural Gas" immer gleich ist, hüpfen wir an diese Stelle im Text. Um die Zeitangabe zu überspringen um den Preis auslesen zu lassen, gibt es verschiedene Möglichkeiten:

Variante 1 via \d\a
Mit \d können einzelne Ziffern und mit \a einzelne Zeichen übersprungen werden:

Variante 2 via \#\w
Mit \# kann eine Zahl und mit \w kann ein beliebiges Wort übersprungen werden:

Variante 3 via \s8
Da in diesem Beispiel die Zeitangabe immer gleich viele Ziffern und Zeichen haben wird, können diese mit \s8 übersprungen werden: