Déboguage des scripts de communication série

Déboguage des scripts de communication série

Un avantage notoire des interfaces série Yoctopuce, par rapport aux interfaces RS-232, RS-485 ou série TTL que l'on trouve ailleurs, est la possibilité de définir dans le module des jobs autonomes, par exemple pour interroger un capteur. Cette semaine, nous publions un nouveau firmware pour ces modules qui facilite le déboguage de ces scripts, en permettant de tracer leur avance en parallèle aux échanges de messages.



Si vous n'êtes pas au clair sur ce que l'on peut faire ou pas avec un job de communication sur un Yocto-RS232, Yocto-RS485-V2, Yocto-Serial, Yocto-SPI ou un Yocto-I2C, commencez par lire les articles suivants:

Vous trouverez différents exemples sur notre blog, notamment l'article publié il y a quelques semaines qui expliquait un cas assez élaboré de configuration du Yocto-I2C pour interroger un capteur d'humidité, transmettre la mesure à un capteur de CO2 afin d'obtenir une mesure de compensée en humidité, et récupérer ensuite la mesure de CO2, tout cela de manière autonome.

Si vous avez déjà utilisé le système de job, vous avez probablement eu l'occasion de faire quelques erreurs durant le développement de vos scripts. Et jusqu'à présent, il faut reconnaître que le diagnostic des erreurs n'était pas toujours trivial: on devait essentiellement déterminer l'origine de l'erreur en voyant la dernière commande envoyée par le job.

Les améliorations

C'est pourquoi nous vous proposons cette semaine une mise à jour des firmwares, qui vous facilitera la vie sur plusieurs points:

  • Vous pouvez désormais afficher la valeur des variables d'un job dans les logs du module
  • Lorsqu'un job s'exécute, la fenêtre de détail permet d'afficher, après chaque message échangé, une trace des commandes du job qui ont été exécutées suite à la réception du message. C'est une sorte de debug pas-à-pas qui est affichée en temps réel, mais qui est aussi disponible a posteriori.

Deux améliorations supplémentaires ont été apportées pour faciliter l'édition des jobs:

  • Il est possible désormais de réordonner les commandes d'un job par un simple drag-and-drop
  • Pour ceux qui préfèrent éditer le job dans un éditeur de texte, le fichier sauvegardé par l'interface Web est désormais formaté ligne par ligne, ce qui permet une édition textuelle assez directe.

Affichage de variables dans les logs


La commande Log, qui permet d'ajouter un message de debug dans les logs du modules, effectue désormais les mêmes substitutions que la commande writeVar:

  • ($x:INT) permet d'afficher la valeur de la variable $x sous forme d'entier (décimal)
  • ($x:FLOAT) permet d'afficher la valeur de la variable $x sous forme de nombre réel
  • ($x:BYTE) permet d'afficher la valeur de la variable $x sous forme d'un octet hexadécimal (deux chiffres hexadécimaux)
  • ($x:WORD) et ($x:WORDL) permettent d'afficher la valeur de la variable $x sous forme d'un word hexadécimal (quatre chiffres hexadécimaux). Le suffixe L permet l'affichage au format little-endian, c'est-à-dire avec l'octet de poids fort à la fin.
  • ($x:DWORD) et ($x:DWORDL) permettent d'afficher la valeur de la variable $x sous forme d'un dword hexadécimal (huit chiffres hexadécimaux). Le suffixe L permet l'affichage au format little-endian, c'est-à-dire avec l'octet de poids fort à la fin.

Trace de l'exécution des tâches


Dans la fenêtre de l'interface Web qui vous permet de voir les messages échangés par l'interface en temps réel, vous avez désormais la possibilité de suivre en parallèle l'exécution des tâches de ce job, pas-à-pas. A droite de chaque message, si un job a pu progresser à la suite du message, un petit symbole (i) est affiché. En cliquant sur ce symbole, on fait apparaître une fenêtre qui affiche la définition du job, et montre quelles étapes de chacune des tâches a été évaluée suite à ce message, et dans quel ordre:

Trace de l'exécution d'un job
Trace de l'exécution d'un job


Cette fenêtre reste alors ouverte jusqu'à ce que vous la fermiez explicitement, mais son contenu est mis à jour chaque fois que vous passez la souris sur le symbole (i) d'un autre message. Vous pouvez ainsi retracer l'exécution du job au fur à mesure des messages échangés:

Suivi de l'évolution d'un job
Suivi de l'évolution d'un job


En bonus, lorsque le pas exécuté est une commande expect pour analyser un message, en cliquant sur l'expression d'analyse vous lancerez automatiquement l'analyseur d'expressions sur le message correspondant:

Evaluation des expressions 'expect'
Evaluation des expressions 'expect'


Cela vous sera permettra par exemple de vérifier le décodage des variables qui a été effectué, ou - dans le cas où une expression expect a échoué - de savoir à quel caractère précisément du message l'évaluation de l'expression s'est arrêtée.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.