5. Le port série
Les messages MODBUS correspondent à des opérations relativement simples de lecture et écriture
de registres binaires (appelés bits, ou "coils") et de mots de 16 bits. Il s'agit systématiquement d'un
échange initié par l'hôte, et auquel l'appareil "esclave" répond. Le Yocto-Serial gère de manière
transparente le mode ASCII ou RTU, et calcule lui-même les octets de validations (LRC et CRC)
spécifiés dans le protocole MODBUS. Les fonctions de l'API les plus utiles en mode MODBUS sont:
• modbusReadBits(), pour lire un ou plusieurs bits d'état (fonction MODBUS "Read coils")
• modbusReadInputBits(), pour lire un ou plusieurs bits d'entrée (fonction MODBUS "Read
input bits")
• modbusReadRegisters(), pour lire un ou plusieurs registres d'état (fonction MODBUS "Read
holding registers")
• modbusReadInputRegisters(), pour lire un ou plusieurs registres d'entrée (fonction
MODBUS "Read input registers")
• modbusWriteBit(), pour modifier un bit d'état (fonction MODBUS "Write single coil")
• modbusWriteBits(), pour modifier plusieurs bits d'état (fonction MODBUS "Write multiple
coils")
• modbusWriteRegister(), pour modifier un seul registre d'état (fonction MODBUS "Write single
registers")
• modbusWriteRegisters(), pour modifier plusieurs registres d'état (fonction MODBUS "Write
multiple registers")
• modbusWriteAndReadRegisters(), pour modifier plusieurs registres et relire ensuite
directement plusieurs registres d'état (fonction MODBUS "Read/Write Multiple Registers")
• queryMODBUS() pour envoyer une requête MODBUS arbitraire, et attendre la réponse
En mode MODBUS, si on enregistre un callback de notification de valeur, il sera appelé à chaque
message envoyé ou reçu.
5.6. Protocole Wiegand
Le protocole Wiegand est utilisé principalement pour les systèmes de contrôle d'accès (cartes
magnétiques, badges RFID). Il existe de nombreuses variantes, mais toutes reviennent à envoyer un
séquence de quelques dizaines de bits identifiant un badge. Le Yocto-Serial peut décoder les
messages Wiegand de deux manières: soit envoyer la séquence de bits telle quelle, en ASCII (suite
de zéro et de uns), soit rassembler les bits en octets afin de pouvoir être plus facilement interprétés.
Pour que les octets soient correctement rassemblés, il suffit d'indiquer le nombre de bits de parité au
début qui doivent être séparés au début du message.
Les fonctions de l'API les plus utiles dans ce mode de fonctionnement sont:
• get_lastMessage(), pour obtenir l'identifiant du dernier badge détecté
• reset() pour oublier les identifiants des badges reçus
5.7. Flux de données ASCII
Appelé Generic ASCII stream dans l'interface de configuration, il s'agit de la variante la plus
primitive de communication en format texte, similaire à un accès fichier. Comme le Yocto-Serial
dispose d'un tampon de lecture de 16KB, il est même possible de déplacer le pointeur de position de
lecture librement à l'intérieur de cette fenêtre. Notez que le pointeur de position de lecture est propre
à chaque application: si deux applications accèdent simultanément en lecture au port série à travers
le réseau, l'avancement de la lecture du tampon faite par une application n'aura pas d'effet sur la
disponibilité des données sur l'autre application.
Les fonctions de l'API les plus utiles pour travailler avec un flux de données ASCII sont:
• reset(), pour vider le tampon de lecture
• writeStr(), pour envoyer une chaîne de caractères
• readStr(), pour lire une chaîne de caractères
• read_seek(), pour changer la position du pointeur de lecture dans le tampon
• get_rxCount(), pour connaître la position de la fin du tampon de réception
22
www.yoctopuce.com