avant de lancer la suivante, mais par contre les tâches réactives peuvent être déclenchées à tout
moment, même parallèlement à une tâche périodique.
6.3. Les commandes
Les commandes qui peuvent être utilisées dans une tâche (périodique ou réactive) des modules
Yoctopuce gérant une transmission série sont les suivantes:
EXPECT
La commande expect attend que des données correspondant à un certain pattern apparaissent sur
la ligne série. Si le module est configuré en mode binaire, la correspondance se fera sur une
représentation hexadécimale des données binaires.
La commande expect prend en argument une chaîne de caractères. Certaines expressions
régulières sont supportées:
• . (point) correspond à n'importe quel caractère
• [] définit une union, par exemple [123a-z] correspond à n'importe quel caractère parmis 1...
3,a...z
• [^] définit une exclusion, par exemple [^,] correspond à n'importe quel caractère sauf la
virgule
• * permet de répéter la dernière correspondance zéro, une ou plusieurs fois: .* correspond à
tous les caractères jusqu'à la fin de la ligne
• + permet de répéter la dernière correspondance une ou plusieurs fois. Par exemple, [0-9]+
correspond à un chiffre ou plus
Des expressions spéciales permettent d'effectuer des décodages et d'affecter la valeur lue à l'un des
genericSensor du module:
• ($x:INT) permet de reconnaître une valeur entière (en base 10) qui sera affectée à la fonction
genericSensorX. Par exemple, {$3:INT} permet de reconnaître un nombre entier et l'affecter à
la fonction genericSensor3
• ($x:FLOAT) permet de reconnaître une valeur décimale (nombre à virgule), qui sera affectée
à la fonction genericSensorX. La notation scientifique (par ex. 1.25e-1) est reconnue.
• ($x:DDM) permet de reconnaître une valeur décimale en degrés-minutes-décimales telle
qu'utilisée dans le standard NMEA.
• ($x:BYTE) permet de reconnaître une valeur entière entre 0 et 255 codée en hexadécimal
(comme c'est le cas pour les protocoles en mode binaire). Si la valeur est dans la plage
-128...127, on utilisera ($x:SBYTE) à la place (signed byte). La valeur décodée sera affectée
à la fonction genericSensorX
• ($x:WORD) ou ($x:SWORD) permet de la même manière de décoder une valeur en
hexadécimal sur 16 bits, respectivement non signée ou signée, qui sera affectée à la fonction
genericSensorX. On suppose alors que les octets sont dans l'ordre d'écriture usuel, soit l'octet
de poids fort en premier (big-endian), comme par exemple 0104 pour représenter la valeur
260.
• ($x:WORDL) ou ($x:SWORDL) ont le même effet que les deux précédentes, mais supposent
que les octets sont d'en l'ordre little-endian, c'est-à-dire l'octet de poids faible en premier (par
exemple 0401 pour représenter la valeur 260).
• ($x:DWORD) ou ($x:SDWORD) permettent de la même manière de décoder un nombre sur
32 bit en big-endian (non-signé ou signé).
• ($x:DWORDL) ou ($x:SDWORDL) permettent de la même manière de décoder un nombre
sur 32 bit en little-endian (non-signé ou signé).
• ($x:DWORDX) ou ($x:SDWORDX) permettent de la même manière de décoder un nombre
sur 32 bit en mixed-endian, soit deux mots de 16 bits chacun représenté en big-endian, mais
le mot de poids faible en premier et celui de poids fort ensuite.
• ($x:HEX) permet de reconnaître une valeur en hexadécimal de longueur indéfinie (1 à 4
octets), qui sera affectée à la fonction genericSensorX.
• ($x:FLOAT16B) et ($x:FLOAT16L) permettent de décoder un nombre flottant codé en
hexadécimal selon le standard IEEE 754 sur 16 bits, respectivement avec les octets ordonnés
en big-endian ou little-endian
www.yoctopuce.com
6. Mesures automatiques
29