luc desruelle's Blogue

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 

Partie 3/3 : Distribuer son Framework de projet, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version distribution personnalisée

Desruelle_luc
Trusted Enthusiast

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.

 

Capture 5.PNG

 

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.

  • En utilisant le dossier \scripting
  • En modifiant via une class Enfant la "SpecPage"

 

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.

 

1_ gestionnaire programme.png

Il repose sur une structure « state machine » classique ; avec des états et des transitions via un file d’attente ; ou FIFO Queue.

 

1_ gestionnaire programmecode.png

 

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 »

2_class metadataclass.png

 

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

3_specpage.png

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 ».

5_createuserprojet.png

 

Pour résumer :

Gestionnaire de projet standard de NI.png

 

 

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

 

 

7_MetaDataClass Map.png

 

V] Synthèse des différentes méthodes

 

8_CustomProject Map.png

 

 

 

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Contact , About me. , Google+. , Twitter.

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group