Améliorations de nos modules d'interface série

Améliorations de nos modules d'interface série

Les modules d'interface série Yoctopuce sont capables de faire bien plus que de simples adaptateurs USB vers RS232 ou autre standard. Une particularité peu mise en valeur jusqu'à présent est la possibilité de mémoriser une communication, y compris en gardant trace de l'intervalle de temps entre les messages échangés. C'est pourquoi nous avons amélioré l'interface utilisateur de ces modules, pour mieux vous permettre d'en profiter.

Les modules concernés par cette amélioration sont:

Sur tous ces modules, il vous suffit de mettre à jour le firmware du module à l'aide du VirtualHub pour bénéficier des nouvelles fonctionalités, même si votre achat remonte à plusieurs années en arrière.

Interface de de visualisation des communications


Voici à quoi ressemble la nouvelle interface:

La nouvelle interface de communication série
La nouvelle interface de communication série


Le nouveau widget vous permet d'explorer plus facilement les communications. Dès l'ouverture de la fenêtre, les derniers 4KB de messages mémorisés par le module sont affichés. Tant que la communication continue, les messages sont automatiquement ajoutés en fin de liste. En tapant un mot-clé à côté de l'icône représentant une loupe, on peut limiter l'affichage aux messages dont le contenu inclut le mot-clé. Si nécessaire, on peut stopper temporairement le rafraichissement à l'aide du bouton pause. L'interface supporte sans problème l'affichage de centaines de messages. Lorsqu'on atteint plusieurs milliers de messages, le navigateur peut devenir un peu lent. Le bouton clear permet de vider la liste ainsi que la mémoire tampon du module.

Chaque message est précédé d'un timestamp, relatif au premier message, et de la direction de la transmission - envoi ou réception. Pour faciliter la lecture, l'une des direction est de plus surlignée. L'horodatage des messages est fait directement par le module d'interface, au moment même où le message est détecté. Il est donc relativement précis, avec une résolution d'une milliseconde.

Quel que soit le type de protocole de capture choisi, il est possible de basculer l'affichage du mode ASCII au mode hexadécimal à l'aide du bouton view hex / view ASCII. Mais attention, si la capture est effectuée dans l'un des mode textuels (Line-based ASCII protocol, STX/ETX-based ASCII protocol ou generic ASCII stream), tous les codes de contrôle non textuels seront automatiquement filtrés et n'apparaîtront donc pas dans la communication, même en mode hexadécimal. Utilisez donc l'un des modes binaires si vous avez besoin de voir les codes de contrôle (voir la section Découpage par messages ci-dessous).

Si vous devez étudier ou comparer une communication faite de nombreux messages, vous pouvez utiliser le bouton export pour exporter le contenu actuel de la conversation:

Conversation exportée en HTML
Conversation exportée en HTML


La vue exportée comprend simultanément les codes hexadécimaux, avec 16 octets par ligne, et les codes ASCII textuels, formattés en respectant les sauts de ligne pour faciliter la lecture. Elle peut être sauvegardée dans un fichier HTML si nécessaire, à l'aide du bouton Save, pour être ensuite réouverte telle quelle à l'aide de n'importe quel navigateur.

Utilisation


Lorsque vous mettez en place un protocole de communication avec un instrument à l'aide d'un module Yoctopuce, l'interface de visualisation des communications vous sera très utile pour vérifier le bon fonctionnement de votre code. En effet, le module garde dans sa mémoire interne aussi bien les messages envoyés que reçus, et vous pouvez donc vérifier a posteriori comment s'est passé une communication pilotée par votre logiciel.

Encore mieux, si vous configurez votre programme pour accéder au module série à travers le VirtualHub à l'aide de la fonction RegisterHub("127.0.0.1", ...), vous pouvez même surveiller la communication entre votre programme et l'appareil en temps réel, puisque le VirtualHub permet une utilisation simultanée des interfaces Yoctopuce par plusieurs applications en parallèle.

Enfin, vous pouvez aussi utiliser cette interface pour analyser un protocole de communication série géré par interface autre que Yoctopuce, grâce à la fonction Snooping. Nous en reparlerons un peu plus bas.

Découpage par message


Le découpage par message est très important pour faciliter la lecture d'une communication et l'interpréter correctement. C'est pourquoi les modules Yoctopuce permettent la configuration d'un protocole, indiquant comment identifier la séparation entre les messages et permettant ainsi leur horodatage en temps réel.

La manière la plus simple pour séparer les messages consiste à se baser sur le sens des communications: chaque alternance du sens de la communication traduit le passage à un nouveau message. C'est la méthode appliquée par les protocoles Generic Byte stream et Generic ASCII stream. Cela fonctionne bien pour tous les scénarios les plus courants où une alternance stricte message/réponse est respectée.

Pour gérer les cas où chaque message n'est pas forcément suivi d'une réponse, ou ceux ou les deux participants peuvent envoyer des messages simultanément, il faut identifier un séparateur de message intrinsèque au flux de donnée.

Pour les messages textuels, le plus courant est le saut de ligne (caractère CR et/ou LF). Vous pouvez choisir le protocole Line-based ASCII protocol si vous désirez utiliser cette solution. Nous avons aussi ajouté tout récemment la possibilité d'utiliser des messages textuels encadrés par les codes STX et ETX, utilisés par certains capteurs. Pour cela, choisissez STX/ETX-based ASCII protocol, et seuls les caractères compris entre le STX et le ETX seront inclus dans les messages.

Pour les messages binaires, une séparation par contenu exige en général une connaissance détaillée du protocole sous-jacent. Mais comme les interfaces Yoctopuce ont la possibilité d'analyser les messages en temps réel, elles peuvent se baser sur l'intervalle de temps entre les trames, qui permet souvent une très bonne séparation des messages. Cet intervalle fait même partie des spécifications pour certains protocoles comme MODBUS par exemple. C'est pourquoi lorsque vous analysez un protocole inconnu, nous vous recommendons en général de faire le choix d'un Frame-based binary protocol avec une séparation entre les trames de 3ms ou 5ms par exemple.

Le snooping: l'analyse externe de communications série


Durant le développement d'un protocole de communication, il est souvent utile d'étudier les communications produites par l'outil de référence fourni par le vendeur de l'instrument. Selon le type de bus de communication, c'est plus ou moins facile.

En RS485, c'est le plus facile: en effet on peut sans autre connecter une interface supplémentaire sur un bus RS485. Donc en branchant un Yocto-RS485-V2 sur un bus RS485, vous obtiendrez facilement la trace de tous les messages qui y transitent. Vous m'aurez qu'à trouver le bonne vitesse de communication, et éventuellement à croiser D+ et D- si nécessaire. Par contre, les lignes de donnée étant partagées, vous ne pourrez pas déterminer le sens d'envoi des messages écoutés.

En RS232, ce pourrait être plus compliqué à faire, mais pour vous simplifier la vie nous proposons un RS232-Snooping-Adapter qui s'insère entre deux prises DB9 pour permettre d'y raccorder un Yocto-RS232. Si vous configurez le Yocto-RS232 en mode Snooping, il sera capable d'écouter la communication dans les deux sens et de vous montrer le détail des messages envoyés, y compris la direction.

Sur une ligne série TTL/CMOS 3V ou 5V, c'est aussi possible de la même manière, même si nous en avions peu parlé jusqu'à présent. Il suffit de câbler le Yocto-Serial de la même manière que fait par le RS232-Snooping-Adapter, c'est à dire raccorder l'une des lignes de communication sur l'entrée RD du Yocto-Serial, et l'autre ligne sur l'entrée CTS (et non sur la ligne TD, qui est une sortie et qui doit donc rester débranchée en mode Snooping):

Raccordement d'un Yocto-Serial en mode Snooping
Raccordement d'un Yocto-Serial en mode Snooping



En SPI, nous venons de la rajouter la possibilité de faire du snooping. Le circuit d'adaptation des niveaux électrique du Yocto-SPI étant totalement bidirectionnel, une fois configuré en mode Snooping il est possible de le brancher en parallèle sur toutes les lignes du bus SPI à surveiller, et il écoutera toutes les lignes sans interférer avec la communication. Les deux lignes de donnée SDI et SDO sont capturées simultanément, et elles sont affichées séparément. Si le bus inclut la ligne SS, il faut le raccorder aussi pour le snooping, car elle aide à synchroniser le début des caractères. Sans SS, un décalage d'un bit sur l'horloge peut se produire à l'établissement de la connexion (en particulier en mode 0 et en mode 2), ce qui rend le décodage des messages très ardu.

Et finalement, en I2C, nous n'offrons pour l'instant pas la fonction de Snooping. Mais qui sait, cela pourra peut-être venir si vous en avez le besoin et que vous nous en faites part...

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.