Articles Tagués ‘State’

Command Pattern

Publié: juillet 3, 2012 dans LabVIEW
Tags:, , , ,

Depuis quelques années maintenant LabVIEW permet de programmer des application « Orienté Objet » que l’on appelle LVOOP (LabVIEW Object Oriented Programming)

Ce design pattern se présente sous la forme d’une architecture de type producteur consommateur, c’est-à-dire qu’une boucle produit des données (classe enfant de la classe Actor_Generic) et les empile dans une file d’attente. La boucle consommatrice dépile la file d’attente et envoie l’élément lu vers un VI nommé « Core » qui est un VI de la classe parent Actor_Generic qui en fonction de la classe enfant reçue appel le VI « Core » de cette classe (c’est le dynamic dispatch).

.

Grâce à cette architecture simple à mettre en place, nous avons une application facilement évolutive on peut facilement modifier une classe sans impacter le fonctionnement global de l’application.

Dans cet exemple nous avons deux types de messages empilés dans la file d’attente un message « Stop » qui appel le VI Core de la classe Stop qui ne fait que passer une constante Vrai pour stopper la boucle consommatrice. Et le second type de message appelés ici Actor qui exécutent une tâche particulière, ici renvoyer un signal sinus ou carré en fonction des paramètres d’entré.

Nous allons maintenant présenté quelques sections du code:

Sinus:

On récupère les valeurs de l’amplitude et de la fréquence pour les passer à des VIs dits « accesseurs » ( ils permettent juste d’écrire une valeur dans la classe comme pour un cluster), évidemment LabVIEW dispose d’une méthode de génération automatique des accesseurs afin que la tâche ne soit pas fastidieuse… Les données sont donc stockées dans la classe Actor_Sinus qui est passée à la file d’attente. Dans la boucle consommatrice on va récupérer cette classe (enfant de Actor_Generic) ce qui permet de rediriger les données vers le bon VI.

Carré:

Comme pour la fonction sinus

Le dynamic dispatch permet d’accéder à différents VI de manière dynamique (cela revient à créer une machine d’état)

Présentation de l’architecture dans le projet LabVIEW:

Publicités