I] Introduction
Sur un nouveau projet, afin de ne pas repartir d'une feuille blanche, les développeurs utilisent leur Framework de projet, qui correspond à leur structure de programme personnalisée.
Depuis la version LabVIEW 2012 un gestionnaire de projet permet d'ajouter ses modèles et de les distribuer facilement. voir
Partie 2/3 : Distribuer son Framework, modèle de projet personnalisé, avec le gestionnaire de projet...
Le modèle "simple" utilise la fenêtre de gestion "standard" de NI LabVIEW pour générer et modifier le code du projet.
Si comme moi, cete fenêtre ne correspond pas "entierement" à vos attentes, par exemple "elle ne fait que copier" l'arborescence du projet; mais je voudrai :
- Renommer des dossiers suivant des options à ajouter
- Ajouter le nom de application; le client; le copyright;...
- Modifier la distribution du projet pour la génération de l'exe;
- Modifier les options du build
- Modifier le fichier ini
- ...
Nous allons donc voir comment modifier les options de génération de la fenêtre de distribution de projet LabVIEW.
Et pour cela nous allons :
-
Créer une class <MetaDataClass> enfant de la class MetaDataObj\MetaDataObj.lvclass
-
Créer une nouvelle "SpecPage.vi", qui va copier les nouvelles spécifications de la MetaDataClass personnalisée
-
Créer un code qui va réaliser les actions de personnalisation
Avant de commencer, il faut bien comprendre le fonctionnement du gestionnaire de projet de LabVIEW.
II] Fonctionnement "standard" du gestionnaire de projet
Le gestionnaire de projet utilise le code LabVIEW XXXX\resource\dialog\NewProjectWizard\Project Copying\CreateUserProject.vi Et il est configuré par les fichiers XML des projets.
Il repose sur une structure « state machine » classique ; avec des états et des transitions via un file d’attente ; ou FIFO Queue.
initialisation des données Case "Init Spec Page" du générateur de projet : Les données de spécification du projet sont passées dans la « Data » privée d’une class « MetaData.class »
Lors de la lecture du fichier XML du projet, si aucune class fille n’est spécifiée, le gestionnaire de projet va charger la class Parent, et ouvrira la fenêtre « standard » de spécification du projet
case "Open Spec Page" : lecture via property "Read Spec Page.vi" du chemin de la page de spécification
Après la page de spécification, la distribution du projet est réalisée par « createuserpojet.vi» qui exécute les actions de duplication du projet, selon les données de la class « MetaData.class ».
Pour résumer :
III] Ajouter des options personnalisées au gestionnaire de projet
Nous allons utiliser trois tags optionnels du fichier XML du projet
XML Tag
|
Description
|
Example Project
|
Optional Tags
|
<MetaDataClass>
|
Specifies the path to a class that defines custom behavior for the user interface of the second page of the Create Project dialog box.
|
Actor Framework
|
<CustomVIMode>
|
Determines when to run a custom VI during the project creation process. Select from the following values:
- None—No custom VI runs. If you omit the
<CustomVIMode> tag, None is the default value.
- AfterPage1—After the user selects a project, the Create Project dialog box closes, and the custom VI runs.
- AfterPage2NoUI—After the second page of the Create Project dialog box creates the project, the custom VI runs and completes. Then, the Create Project dialog box closes.
- AfterPage2WithUI—After the Create Project dialog box creates the project, the Create Project dialog box closes, and the custom VI runs. The custom VI is responsible for showing or hiding its panel.
|
Simple State Machine, Blank VI, Actor Framework
|
<CustomVIPath>
|
Specifies the path to the custom VI you want to run during the project creation process. If you set the <CustomVIMode> tag to None, LabVIEW ignores the <CustomVIPath> tag.
|
Actor Framework
|
Avec les valeurs :
- <MetaDataClass> : chemin relatif de la class fille. Je vous propose de partir de l'exemple de l'Actor Framework, afin de créer la votre
- <CustomVIMode> : AfterPage2WithNoUI qui va donc permettre de réaliser des actions personnalisées via le vi <CustomVIPath>
Nous pouvons avoir
<CustomVIMode>AfterPage2NoUI1</CustomVIMode>
<CustomVIPath>scripting/MetaDataObj/PostCopyScripting.vi</CustomVIPath>
<MetaDataClass>scripting/MetaDataObj/MaMetaDataObj.lvclass</MetaDataClass>
Pour information, à partir de la version LabVIEW 2013 il existe des exemples de template, vit, pour
- la page de spécification : SpecPage.vi
- le code de "post copy scripting", code personnalisé après la code générique de copie : PostCopyScripting.vit
VI] Exemple distribution projet personnalisée
Lors de l'initialisation des données Case "Init Spec Page" du générateur de projet : suite lecture du fichier XML du projet, le gestionnaire de projet va charger la class MaMEtaDataObj.lvclass
Dans le case "Open Spec Page" : lecture via property "Read Spec Page.vi" du chemin de la page de spécification.
Ouverture de la page de spécification personnalisée.
Après la validation de la page de spécification, la distribution du projet est réalisée par « createuserpojet.vi» qui exécute les actions de duplication du projet, selon les données de la class « MetaData.class ».
Dans le case "Open Custom Vi" : l'option <AfterPage2NoUI> du fichier XML va permettre de réaliser le code de <CustomVIPath> PostCopyScritping.vi
V] Synthèse des différentes méthodes
Luc Desruelle | | Voir mon profil
CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW
Contact , About me. , Google+. , Twitter.