Vous êtes sur la page 1sur 27

Architecture

plug-in avec
LabVIEW
Olivier JOURDAN – 04/07/2013
• Découverte de LabVIEW à l’IUT 1999
• À SAPHIR depuis octobre 2001
• Fan de la POO, des Xcontrols
• Pas de formation « informatique »

http://fr.linkedin.com/in/jourdanolivier

https://twitter.com/OJourdan

Olivier JOURDAN
• Quand
• Exemples concrets
• Mise en œuvre
• Problèmes
• Ressources

Plan
QUAND ?
Les raisons qui poussent à l’implémentation
d’une architecture plug-in
Lorsque vous souhaitez modifier les fonctionnalités d’une
application sans recompiler l’ensemble du code.

Quand ?
EXEMPLES CONCRETS
• Navigateur web
• Logiciel de traitement d’images
• …

Hors LabVIEW
• Une application de mesure distribuée permettant
d’associer des voies d’acquisition de fréquence différente
• Développée en 2007, l’architecture plug-in a permis
d’ajouter de nouvelles sources d’acquisition sans
intervenir sur le code principal
• Le gestionnaire peut installer des configurations
spécifiques à chacun de ses utilisateurs

AMANDINE
• Une application de visualisation de fichier de mesures
• Capable de s’adapter à tout type de format
• Permettant l’ajout de traitements

TOPAZE
MISE EN ŒUVRE
Utilisation de la Programmation-Orientée-
Objet et des packed libraries
• L’architecture doit :
• Proposer une interface entre l’application et les plug-ins
• Fonctionner en environnement de développement comme
en exécutable
• L’installation des plug-ins doit :
• être indépendante de l’application

Fonctionnalités
• Une classe est un ensemble de données et de fonctions
qui interagissent sur ces données
• Un objet est une instance spécifique d’une classe

• AG34401
Classe Instrument Objet 1 •

B254255
1,4 mV

Identifiant
Données Numéro de série • SP202
Dernière valeur lue Objet 2 • 3367E
• 15,37g

Initialiser
Ecrire
Fonctions Lire
• LSC480
Objet 3 • S/2323A88
Libérer • 57,3K

Rappel - Encapsulation
• Utilisation de la POO pour bénéficier de l’héritage
• Chargement dynamique des classes filles

Chargement Fichier
statique
Chargement CSV WAV AIFF TDMS …
dynamique

Interface
• Les enfants héritent des fonctions et des données du
parent
• Les enfants peuvent ajouter des données et des fonctions

Parent Instrument Ancêtres

Enfants GPIB Série Descendants

Rappel - Héritage
• Redéfinition
• Capacité de modifier le comportement d’une fonction
parente
• Dispatch dynamique
• LabVIEW décide lors de l’exécution quelle fonction appeler
• Le choix est dicté par le type de l’objet

Rappel – Dispatch dynamique


61
2
0

Vehicle.lvclass Truck.lvclass Car.lvclass


Get Cargo Get Cargo Get Cargo
Capacity.vi Capacity.vi Capacity.vi

Rappel – Dispatch dynamique


• La classe mère des plug-ins est le lien entre l’application
et les plug-ins
• Les classes filles redéfinissent les méthodes « interface »
de leur mère
• Les classes filles sont chargées dynamiquement
• Le « dispatch dynamique » définit la méthode qui doit
être appelée

Interface
• Problème : Une fois construite, l’application ne connait
pas à l’avance les plug-ins à charger. Les plug-ins doivent
donc contenir l’ensemble des ressources nécessaires à
leur exécution.
• Solution : distribuer les plug-ins sous forme de packed
library (*.lvlibp)

Distribution - Lvlibp
• Disponible depuis LV 2010
• Permets de compiler une librairie (*.lvlib) en un seul
fichier contenant toutes ses dépendances
• La packed library permet l’appel des VIs publics de la
librairie source

Packed Library
Démo
LIMITATIONS CONNUES
• Une packed library est compilée pour une version de
LabVIEW et une cible
• Le chargement d’un VI d’une packed library entraine le
chargement en mémoire de tous le Vis qui la compose
• L’imbrication de packed library n’est pas simple

Limitations
Une architecture plug-in permet de développer des
applications modulaires, mais quel que soit la solution
mise en œuvre cela engendre une complexification du
développement non négligeable : la phase de design de
votre projet reste primordiale

Avertissement
RESSOURCES
Pour aller plus loin
• Plug-in Architecture using Packed Project Libraries
(lvlibp)  tutoriel de la solution présentée aujourd’hui
• Packed Project Library Pitfalls
• Designing and Deploying a Plug-in LabVIEW
Measurement System with Multiple Abstraction Layers
Using the Actor Framework

NI Community
• LabVIEW Field Journal
• Software Engineering for LabVIEW
• VIShots

Blogs et podcast
DES QUESTIONS ?