Librairie LabVIEW: utilisation avancée

Librairie LabVIEW: utilisation avancée

La quasi-totalité des fonctionnalités de l'API Yoctopuce sont présentes dans la librairie LabVIEW, cela représente plus de 2000 fonctions différentes disponibles à travers plus de 80 classes. Cependant, il n'y a qu'un VI par classe, comment a-t-on réussi à tasser une moyenne de 25 appels par VI? Cette semaine, on vous propose de vous expliquer plus en détails le concept des objets proxy de l'API Yoctopuce pour LabVIEW.


Les VIs Yoctopuce

Les VIs Yoctopuce ont été conçus pour donner un accès immédiat aux propriétés qu'on a jugé les plus importantes pour chaque classe. Par exemple, la lecture d'un capteur de température se fait de manière assez immédiate:

La manière la plus simple de lire un capteur de température avec la libraire LabVIEW
La manière la plus simple de lire un capteur de température avec la libraire LabVIEW


Il suffit de:

  1. Initialiser l'API Yoctopuce avec le VI RegisterHub
  2. Lire la température avec le VI Temperature
  3. Libérer l'API avec le VI FreeAPI

Ici, on a utilisé directement la sortie currentValue, mais comment accéder aux fonctionnalités plus avancées? par exemple, comment demander au capteur de température quelles sont les valeurs minimales et maximales qu'il a observées? C'est prévu, il suffit de mettre l'entrée "create ref" à TRUE et on obtient sur la sortie "optionnal ref" une référence sur l'objet Proxy correspondant au capteur. Cet objet Proxy sert à gérer le capteur en tâche de fond et à permettre l'accès à toutes les méthodes et propriétés relatives au capteur de Température, y compris get_highestValue() et get_lowestValue().

Utilisation de l'objet TemperatureProxy pour connaître les valeurs min et max
Utilisation de l'objet TemperatureProxy pour connaître les valeurs min et max


Par contre, il est important de ne pas oublier de fermer la référence une fois que l'on n'en a plus besoin. Notez que "fermer la référence" ne fait que ce qui est marqué sur l'étiquette: à savoir signaler à LabVIEW qu'on n'a plus besoin d'interagir avec cet objet Proxy, qui lui continue d'exister et de vivre sa vie en tâche de fond.

Comment ça marche?

Si on regarde le code source du VI Temperature, on comprend assez facilement le principe. Lorsque que vous utilisez le VI Temperature de la librairie Yoctopuce, un appel est fait à la classe statique YoctoProxyManager. Cet appel sert à obtenir une référence sur l'objet Proxy correspondant au nom de donné en paramètre. En l'absence de nom, l'objet renvoyé correspondra au premier capteur trouvé. Notez que si aucun capteur ne peut être trouvé, on obtient une référence valide mais qui pointe sur un capteur lambda qui se déclare comme "Hors ligne".

Source du VI Temperature
Source du VI Temperature


Cette référence sur l'objet Proxy est utilisée pour récupérer la valeur de toutes les propriétés interfacées directement par le VI. Une fois toutes les propriétés nécessaires gérées, soit le paramètre create ref est à FALSE (valeur par défaut) et la référence est fermée, soit il est à TRUE et la référence vous est retournée directement via la sortie "optionnal ref", et c'est à vous d'en faire bon usage.

Un autre exemple un peu moins trivial

Ce mécanisme peut passer pour du luxe sur des classes aussi simples que Temperature, mais il est vraiment indispensable pour des classes plus complexes. La classe Display en est le parfait exemple. Pour afficher un simple "Hello" sur un écran de multiples appels sont nécessaires.

Afficher 'Hello' en haut à gauche d'un écran Yoctopuce
Afficher 'Hello' en haut à gauche d'un écran Yoctopuce


  1. On utilise le VI Display pour obtenir une référence sur l'objet YDisplayProxy
  2. On utilise cette référence pour faire un appel à resetAll, qui efface tout l'écran
  3. Toujours avec cette référence, on appelle get_displayLayer(1) et on obtient une autre référence, de type YDisplayLayerProxy, sur la couche N°1 de l'écran
  4. Puis cette référence sur la couche n°1 est utilisée pour afficher le texte "Hello" à la position 0,0 avec un alignement TOP/LEFT. La constante d'alignement est fournie par la classe "YDisplayLayerProxy".
  5. Enfin, les références sont fermées et l'API libérée


Conclusion

Si votre utilisation des modules Yoctopuce se limite à la lecture d'un capteur ou la commutation d'un relais, les VI fournis seront amplement suffisants. En revanche, si avez besoin de gérer des comportements un peu complexes, vous aurez à utiliser ces références sur les objets Proxy. Mais, on vient de le voir, c'est loin d'être insurmontable. Pour finir, voici les quelques points que vous ne devez pas perdre de vue:

  • Par convention, les propriétés de l'API proxy sont gérées à l'aide d'un cache par la librairie et peuvent être appelées aussi souvent que vous le désirez sans pénaliser le temps d'exécution
  • La plupart des méthodes de l'api proxy entraînent des communications explicites avec les modules et doivent être appelées à bon escient. Plus il y aura de communications, plus votre code sera lent.
  • Toutes les références doivent être fermées, sinon LabVIEW va rapidement tomber à court des ressources.

Enfin, notez que les quelques exemples donnés ici ne font pas de traitement d'erreur, ne les recopiez pas tels quels dans une application de production.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.