Reconnaissance de commande

Les valeurs peuvent être lues dans un texte avec ce bloc. Le modèle de recherche correspondant est défini dans les propriétés.

Table des matières


Entrées

Abréviation Résumé Description
T Text Input Commande texte.




Sorties

Abréviation Résumé Description Valeurs
Lv Last extracted value Dernière valeur extraite




Propriétés

Résumé Description Valeur défaut
Détection de commande Caractère pour lire une valeur :
\v = Valeur
\1 = byte de la valeur 1 (le moins significatif), \2 = byte de la valeur 2, \3 = byte de la valeur 3, \4 = byte de la valeur 4
\h = Valeur interprétée comme un nombre hexadécimal

Caractère pour naviguer dans le texte :
\. = N'importe quel caractère,
\w = N'importe quel mot,
\# = N'importe quel nombre,
\d = Chiffre 0-9,
\m = Caractère A-Z/a-z/0-9,
\a = Caractère A-Z/a-z,
\s12 = Ignorer 12 caractères,
\iTexte\i = ignorer jusqu'à 'Texte'

Autre caractères :
\x = Hexadécimale (ex. : \x09)
\\ = Slash
\t = Tab (0x09),
\b = Espace (0x20), ou Tab (0x09),
\r = Retour (0x0d),
\n = Nouvelle ligne (0x0a)
-
Interprétation de la valeur avec le signe Si cette case est cochée, la reconnaissance de commande utilise les valeurs \ 1, \ 2, \ 3, etc. (nombre entier signé). -




Exemple de programmation

La reconnaissance de commandes permet de naviguer dans un texte ou un texte source et de récupérer des valeurs.

Characters used to extract a value:
\v = numeric value
\1 = value of byte interpreted as 1st byte of the output (\2, \3, ...)
- If the received data is interpreted as hexadecimal (e.g., "\x0A"), we obtain its decimal equivalent (10 in this example). This method also works for multiple hexadecimal bytes (e.g., "\x0A\x0B"). When combined, these bytes form the 32-bit integer 0x0A0B, we can use \2\1 which equals 2571 in decimal. When we will read the same value with \1, result will be 10 in decimal.
- If the received data is interpreted as text, each byte represents an ASCII character. For instance, "Loxone" corresponds to the Line Feed character with an ASCII code of 76.
- The data can be used as a signed integer by considering the correct byte order and applying sign extension if necessary.
\h = value interpreted as hexadecimal number
- If the received data is a hex string represented as text (e.g., "0A"), we can convert it to its decimal equivalent (10 in this example).
- This method also works for multiple hex data (e.g., "0A0B"). When converted from hex to decimal, "0A0B" corresponds to 2571.

Characters to navigate through the text:
\. = any character
\w = any word
\# = any number
\d = digits 0-9
\m = character A-Z/a-z/0-9
\a = character A-Z/a-z
\s12 = skip 12 characters
- For example, \s12 skips 12 characters when the received data is a text string.
- If the received data is a hex string represented with escape sequences (e.g., \xFE\xFF\x00\x12\xA0\xB0\xC1\xD2\xE3\xF4\x11\x16\x17), then \s12 will skip 12 hex bytes. In this case, it will jump behind \x16, effectively skipping a total of 48 text characters (since each hex byte is represented by four text characters).
\iText\i = jump behind "Text"

Special characters:
\x = Hexadecimal number (e.g. 0x09)
\\ = Slash
\t = Tab (0x09)
\b = Space (0x02) or Tab (0x09)
\r = Return (0x0d)
\n = Newline (0x0a)

Dans l'exemple suivant, nous souhaitons toujours extraire le prix actuel du gaz naturel :

Étant donné que l'indication "Gaz naturel" est toujours la même, nous sautons à cette position dans le texte. Pour sauter l'indication de l'heure afin de récupérer le prix, plusieurs possibilités s'offrent à vous :

Variante 1 via \d\a
Avec les chiffres simples \d et les caractères simples \a peuvent être ignorés :

Variante 2 via \#\w
Avec \# un nombre et avec \w n'importe quel mot peut être sauté :

Variante 3 via \s8
Comme dans cet exemple l'heure aura toujours le même nombre de chiffres et de caractères, ils peuvent être sautés avec \s8 :