Obtenir les logs de l'API Yoctopuce dans LabVIEW

Obtenir les logs de l'API Yoctopuce dans LabVIEW

En discutant avec un client qui avait des problèmes avec la librairie LabVIEW, on s'est fait la réflexion que ça serait quand même pas mal d'avoir les logs de l'API Yoctopuce pour comprendre ce qu'il s'y passe. Il se trouve que la librairie LabVIEW contient déjà une primitive permettant de le faire, mais elle n'est pas forcément facile à utiliser. Alors cette semaine on vous montre comment faire.



Pour les gens pressés

Si vous n'avez pas envie de vous farcir la théorie pour comprendre comment ça marche, voici un fichier ZIP qui contient deux VIs. Dézippez-le où bon vous semble, et ouvrez le Block Diagram de votre application LabVIEW. Supposons qu'il s'agisse d'une application toute bête qui lit un capteur de température comme celle ci-dessous

Une application toute bête qui lit un capteur de température
Une application toute bête qui lit un capteur de température


Ensuite:

  1. Glissez-déplacez le VI GetYoctoAPILogs.vi dans votre Block diagram.
  2. Dans le Front panel de votre application créez un String indicator suffisamment grand pour contenir les logs.
  3. De retour dans le Block diagram, créez une référence sur le String indicator et connectez-la au VI de log.

Ajoutez le VI GetYoctoAPILogs et donnez-lui une référence sur un String indicator
Ajoutez le VI GetYoctoAPILogs et donnez-lui une référence sur un String indicator


C'est tout, si vous lancez votre application, les logs de l'API vont apparaître dans le String indicator.

Ça marche (presque)
Ça marche (presque)


Par contre vous remarquerez que si vous appuyez sur le bouton STOP, l'application ne s'arrête pas. C'est parce que VI de récupération des logs continue à tourner. Pour régler ce problème, placez le VI StopYoctoLogs dans votre Block diagram. C'est en fait une variable booléenne globale, mettez-la à True à la fin de votre application et le tour est joué.

Stopper le VI de récupération des logs
Stopper le VI de récupération des logs


Comment ça marche

Pour obtenir les logs de l'API, il vous faut utiliser la méthode GetLog du VI API.

Il faut utiliser la méthode GetLog du VI API
Il faut utiliser la méthode GetLog du VI API


Si vous appelez cette méthode avec une chaîne vide, vous obtiendrez la première ligne des logs, si vous lui donnez la première ligne, vous obtiendrez la deuxième et ainsi de suite. S'il n'y a plus de lignes, GetLog renvoie une chaîne vide. Il vous faut donc tester le résultat de GetLog et, s'il n'est pas vide, ajouter la ligne agrémentée d'un retour chariot au String indicator qui doit contenir les logs. Si le résultat de GetLog est vide, on lui resservira la dernière ligne qu'on connaît un peu plus tard.

On ajoute les lignes non vides au String indicator
On ajoute les lignes non vides au String indicator


Il ne reste plus qu'à mettre tout ça dans une jolie boucle:

On met une boucle autour
On met une boucle autour


Le problème, c'est comment arrêter la boucle quand le VI principal s'arrête. N'étant pas des grands spécialistes de LabVIEW, on a un peu exploré les différentes manières de stopper des boucles qui tournent en parallèle dans labVIEW, pour en arriver à la conclusion que le plus simple à mettre en œuvre reste une bonne grosse variable globale que le programme principal devra mettre à True quand il veut que la boucle des logs s’arrête. Le gros inconvénient de cette méthode, c'est que les variables globales sont forcément stockées dans un VI séparé. Accessoirement, il ne faut pas oublier d'initialiser cette condition d'arrêt à False avant de commencer la boucle.

On utilise une variable globale pour stopper la boucle
On utilise une variable globale pour stopper la boucle


Voilà pour l'essentiel, le reste du VI n'est que de la cosmétique:

  • Ajouter une petite temporisation dans la boucle pour qu'elle ne consomme pas trop de CPU quand elle tourne à vide.
  • Avant de démarrer, vider le contenu du String indicator, au cas où.
  • Configurer le String indicator pour qu'il utilise une fonte non proportionnelle (Courier) et qu'il affiche une scrollbar verticale.
  • Fermer les références créées, parce qu'on est pas des sauvages.

Le VI complet
Le VI complet


Conclusion

Un VI permettant de récupérer les logs de l'API Yoctopuce n'était pas excessivement compliqué à faire, mais ça demandait un peu de réflexion pour le faire à peu près juste. Ce VI vous sera particulièrement utile pour diagnostiquer d'éventuels problèmes réseau avec les YoctoHubs ou encore pour comprendre ce qu'il se passe lorsque vous lancez un exécutable créé avec LabVIEW, on a cru remarquer que ces exécutables gèrent les DLL de façon un peu bizarre manière peu conventionnelle. Si vous avez besoin de debugger des problèmes de DLL, vérifiez que vous avez au moins la version 50357 de la librairie, on y a bien amélioré le traçage du chargement de yapi.dll.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.