Intégrer le snooping série à vos applications

Intégrer le snooping série à vos applications

Une des particularités des interfaces séries Yoctopuce est leur capacité d'écouter les messages circulant sur une ligne existante dans les deux sens, pour reconstruire la communication. Le plus souvent, c'est utilisé pour comprendre comment marche un protocole non documenté, mais on peut aussi utiliser cette fonction en production pour surveiller et mesurer un système existant. C'est pourquoi nous venons d'ajouter une nouvelle API facilitant l'intégration du snooping série à vos projets.


Le but de faire un programme qui écoute sur une ligne série RS232 ou RS485 peut être par exemple de moderniser la remontée de mesures vers une base de données dans le cloud, sans interférer de quelque manière que ce soit avec le processus de contrôle lui-même. En rajoutant une interface qui ne fait qu'écouter sur la ligne de communication, comme nous vous l'avons montré dans un précédent article, on évite toute modification au code de contrôle.

Un autre cas où il peut être intéressant d'utiliser la capture de messages séries en production est pour la traçabilité: en mémorisant tous les messages transmis sur la ligne série, on peut garder une trace de toutes les mesures et toutes les commandes envoyées sur un système, et donc les analyser après coup en cas de dysfonctionnement occasionnel.

Jusqu'à présent, si les informations à récolter étaient assez simples pour être capturées par les dix genericSensor présents dans nos interfaces séries, vous pouviez les décoder directement dans l'interface série et les gérer directement comme des capteurs natifs Yoctopuce. Mais si vous aviez besoin d'accéder au contenu complet des messages échangés, il fallait ajouter à votre programme une boucle qui appelle continuellement:

messagesList = serialPort.snoopMessages(0)



Avec la nouvelle version de notre librairie, vous pourrez à la place définir une fonction de callback qui sera appelée automatiquement par notre librairie pour chaque message reçu, dans un sens ou dans l'autre, en même temps que tous les autres callbacks de changement de valeur, comme dans l'exemple en Python ci-dessous:

def messageSnooper(serialPort, msg):
    dt = str(msg.get_time()) + "ms"
    if msg.get_direction() == 1:
        print(dt + " >> " + msg.get_message())
    else
        print(dt + " << " + msg.get_message())

[...]
serialPort.registerSnoopingCallback(messageSnooper)



Cette méthode par callback est particulièrement intéressante si vous désirez ajouter la traçabilité à une application conçue avec des interfaces série Yoctopuce, puisqu'elle vous permet en quelques lignes de garder trace de tous les messages envoyés et reçus par votre programme, y compris les timings, sans interférer avec les autres fonctions de notre librairie qui envoient et reçoivent des informations sur la ligne série.

Dans le même esprit que la capture des logs que nous vous avons présentée il y a quelques semaines, l'ajout de la capture des messages à votre application est un outil qui en facilitera la maintenance sur le long terme. Pensez-y donc dès la conception !

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.