Votre navigateur est obsolète !

Pour une expériencenet et une sécurité optimale, mettez à jour votre navigateur. Mettre à jour maintenant

×

Luc Desruelle

Certifié LabVIEW Architect & TestStand développeur - LabVIEW Champion - Chef de projets Test et Mesure - General Manager - Associé MESULOG - Auteur livre LabVIEW

Luc Desruelle
Permis de conduire
Grenoble Area France
Situation professionnelle
En poste
Indisponible
Présentation
Hi, my name is Luc Desruelle. I’m a Physics and Instrumentation engineer, Software architect and General Manager at MESULOG, an « NI Alliance member » company. I’m a member of the « NI author program » with the French book “LabVIEW: programmation et applications“. I used LabVIEW since 1998, professional developer since 2002, certified since 2007 and LabVIEW Architect (CLA).
I love LabVIEW. To my delight I work every day with LabVIEW since 14 years. I developed several applications and some examples are available on my company website (http://mesulog.fr/realisations.php?mode=1).

Développeur et Architecte LabVIEW certifié (CLD et CLA), auteur livre "LabVIEW Programmation et applications" édition Dunod, co-gérant de la société MESULOG.

MESULOG étudie, spécifie et réalise des logiciels personnalisés dans le domaine du test et de la mesure, en particulier sur plate-forme LabVIEW et TestStand (National Instruments).

La double formation scientifique et informatique de l’équipe permet à l’entreprise d’être spécialisée dans le pilotage des systèmes d’'acquisition et le traitement de mesures.

Je suis passionné par le développement de logiciel de test et mesure sous LabVIEW, de National Instruments. J’ai passé toutes les certifications LabVIEW de National Instruments. Je participe à des CLA summit, NI Days depuis 2003, anime des journées développeurs et LabVIEW Users Group LUGE.

De formation physique appliquée et instrumentation, je suis un scientifique qui réalise des logiciels. Pour moi, l’informatique est outil, mais pas une finalité.
Le développement informatique sous LabVIEW doit respecter des bonnes règles de développement, trop souvent non respectés, règles que je tente « d’évangéliser » par des formations, présentations techniques et Users Group.

Je développe avec LabVIEW depuis 1998, et la version 5 ; sous TestStand depuis la version 3.


Certified LabVIEW Architect & Developer & recertification / Certification LabVIEW Architect & Développeur (CLA & CLD & CLD-R) / Ingénieur Chef de projets Test et Mesure sous logiciel LabVIEW société MESULOG depuis 2002

NI LabVIEW sur OS Windows, CE, Mobile, PDA, FPGA, Temps réel RT
depuis version 5.0 à 2012
CV réalisé sur DoYouBuzz
Articles de luc desruelle's Blogue forums.ni.com/t5/luc-desruelle-s-Blogue/bg-p/4009
Retour sur le LUGE 2019.2 - 13 juin 2019 le LabVIEW User Group des développeurs LabVIEW et TestStand de Rhône-Alpes
08 juil. 2019

 Rhône-Alpes

 

Réaliser des applications Web avec LabVIEW (CG & NXG) pour publier vos données (Web Services - Web Module - WebVIs)
01 juil. 2019

 

Disponible depuis LabVIEW NXG, l'utilisation du module LabVIEW NXG Web Module permet de réaliser des applications Web à partir des WebVIs. Nous allons vous présenter comment connecter une application développée sous LabVIEW (CG = Current Generation), via des WebServices, à une application Web développée avec LabVIEW NXG via les WebVIs.

  

Architecture webservice application web.png

Cet article est détaillé dans le Chapitre 7 du livre 
"LabVIEW programmation et application - Introduction à LabVIEW NXG" - 4ème édition
parution le 22/08/2018, aux éditions DUNOD - 560 pages - EAN13 : 978-210078283 Lien livre LabVIEW sur le site Amazon. Description détaillée du livre ici

 

C’est surement une des fonctionnalités les plus attendues de LabVIEW NXG : Avec la généralisation des tablettes et smartphones, les développeurs réclament la possibilité d’utiliser leur logiciel au travers d’une interface Web. Mais toujours dans l’esprit de LabVIEW donc sans faire de code textuel. LabVIEW doit permettre de créer facilement des applications Web en s’appuyant sur des technologies standards.

 

Depuis la version 2.0, NXG répond à cette demande. L’éditeur permet de placer des objets HTML5 et de générer le code. Il est possible de modifier le code source HTML, soit pour ajouter des fonctionnalités avec du code JavaScript, soit pour personnaliser l'apparence des contrôles en utilisant une feuille de style CSS (Cascading Style Sheets). Vous pouvez modifier des propriétés telles que la police, la couleur, la forme ou la disposition d'un contrôle.

 

Dans la version standard de LabVIEW, il existe déjà une fonctionnalité permettant de se connecter à la face-avant d’un VI depuis une interface web. Mais cette fonctionnalité nécessite d’installer le RunTime LabVIEW, qui ne supporte pas toutes les plates-formes, et d’activer un plugin Web qui n’est compatible qu’avec certains navigateurs internet. Avec NXG finit les limitations. Les WebVIs peuvent être déployés sur toutes les plateformes, sur n'importe quel navigateur et sans plug-ins.

 

 

 

2_WebVI-Copyright.pngApplication Web avec les WebVIs de LabVIEW NXG

 

Dans cette présentation, je vous propose de

  • développer une application LabVIEW qui réalise des mesures (classique comme applicatif), mais :
  • qui publie les données en JSON via des WebServices : programme accessible au travers du protocole HTTP qui permet l’échange de données par des messages

     

LabVIEW WebService Projet.pngWebService diagram.png

 

  • développer une application web (Web App) avec LabVIEW NXG

NXG Web Service.png3 WebAccess HTML2 - Copie.png

Le module Web de LabVIEW NXG, permet de réaliser une application web standard, conforme aux technologies Web, par exemple :

  1. HTML: permet d’afficher un document à travers un navigateur web
  2. CSS: feuille de style, modifier la mise en forme du document
  3. Javascript: ajout contenu dynamique, intégrer du code dans le document HTML pour l’exécuter sur la machine client

 

Présentation disponible sur le site MESULOG : Journée rencontres LUGE 2019.2 : Application Web LabVIEW CG et NXG Web Module

 

L'utilisation du module est décrit en détail dans le livre "LabVIEW Programmation et applications - Introduction à LabVIEW NXG"  – 4iéme édition parution 2018 aux éditions DUNOD.

Nouveau livre LabVIEW "Programmation et applications" - chapitre introduction à LabVIEW NXG
29 juin 2019

Date de parution : 22/08/2018

Éditeur Dunod - 4ème édition - 560 pages - EAN13 : 978-210078283

Lien livre LabVIEW sur le site Amazon

 

 

Livre_NXG_couverture2.jpg

LabVIEW est un environnement de développement graphique particulièrement bien adapté au domaine de l’acquisition, de la mesure et du contrôle/commande. Son approche totalement graphique offre une souplesse et une dimension intuitive inégalée. Comparativement aux langages textuels il offre la même puissance de programmation mais sans le côté complexe lié à la syntaxe.

 

Co-écrit par un professionnel, cet ouvrage s’adresse du débutant au développeur expérimenté afin de réaliser une application dans les règles de l’art. Des exemples téléchargeables permettent d'illustrer en détail les domaines abordés. Cette nouvelle édition est à jour de la nouvelle version LabVIEW NXG sortie en 2018 et le contenu a été validé par National Instruments, l'éditeur du logiciel.

 

Il est structuré en sept chapitres :

  • Les deux premiers sont consacrés à l’initiation à LabVIEW (160 pages), avec la description du flux de données, des éléments de base et la prise en main de l’éditeur. Il est illustré par des exemples simples.
  • Le troisième chapitre (100 pages) aborde la programmation avancée en LabVIEW en définissant des techniques et architectures permettant au code d’être maintenable, évolutif et performant (règle de programmation, définition structure de programme, machine à états, producteur / consommateur, variable globale, FGV, DVR, programmation Objet, projet, gestion des erreurs, génération exécutable). Il dévoile des précieuses astuces d’un professionnel pour comprendre les concepts nécessaires à la certification LabVIEW Développeur.
  • Les chapitres quatre à six (220 pages) abordent les capacités spécifiques de LabVIEW pour l'acquisition de données sur les cartes National Instruments (via driver DAQmx), le pilotage d'instruments (Série, GPIB, LXI, PXI), la réalisation de driver VISA, les systèmes temps réel & FPGA, le traitement du signal, l'analyse mathématique, la sauvegarde des données et la génération de rapport au format Microsoft Office.
  • Le dernier chapitre (130 pages) est consacré à LabVIEW NXG, la nouvelle génération de l’environnement de développement LabVIEW. L’éditeur a été révolutionné pour être plus intuitif, plus moderne, plus ergonomique et s’éloigner du concept de l’instrument physique. De puissants nouveaux concepts apparaissent, comme les interfaces interactives pour réaliser des mesures sans programmation (System Designer), le zoom, les objets vectoriels, les applications web, la génération de code HTML ou la capture des données. Les nouvelles fonctionnalités sont progressivement détaillées, illustrées avec des exemples et complétées par des glossaires. Le lecteur apprend à faire le lien entre les deux environnements et à comprendre les différences. La démarche à suivre pour la migration du code de LabVIEW Standard vers NXG est expliquée concrètement à partir d’un projet. Au final, la création d’applications Web grâce aux nouvelles fonctionnalités offertes par les WebVIs est décrite en détail (génération de code HTML, feuille de style CSS et intégration JavaScript).

 

Le chapitre 7 de cette nouvelle édition est à jour de la nouvelle version LabVIEW NXG.

Le code des chapitres 2 à 6 sont écrits en LabVIEW « standard », et sont facilement transposables en LabVIEW NXG.

  

Un lien vers un post du forum francophone qui parle de l’examen Certifié LabVIEW développeur (CLD) :

http://forums.ni.com/t5/Discussions-au-sujet-de-NI/CLD-pr%C3%A9paration/m-p/3082265/highlight/true#M...

 

Auteurs : Luc Desruelle, Francis Cottet, Michel Pinard

Luc Desruelle

Certifié LabVIEW Architecte, LabVIEW Champion et Certifié TestStand Développeur. Ingénieur, architecte logiciel et chef de projet Test et Mesure chez MESULOG, partenaire National Instruments.

LUGE 2019.2 retour sur une journée riche en échange
29 juin 2019

Retour rapide sur cette très belle journée du jeudi 13 juin 2019, pour le LUGE 2019.2 (la 2iéme de l'année 2019) : le User Group des développeurs LabVIEW / TestStand en Rhône-Alpes. 

 

La journée a encore été une très belle réussite. Le contenu technique des présentations a été très riche :

  • LabVIEW NXG, et les WebVI,
  • Application Web développées en textuelle VS avec LabVIEW NXG,
  • Web Services sous LabVIEW CG et NXG
  • Modbus série/TCP
  • outils internes,
  • NI Package Manager (NIPM)

Sponsorisé par National Instruments France, et accueilli par Saphir, cet évènement a regroupé une trentaine de développeurs. L’échange de retour d’expérience a été bouillonnant, les présentations techniques toujours aussi pointues et l’ambiance autant conviviale que chaleureuse.

 

Le LUGE s’impose indéniablement comme la rencontre incontournable pour les développeurs LabVIEW / TestStand de la région Rhône-Alpes.

 

Merci encore aux équipes de Wovalab (Olivier Jourdan - WebServices), SAPHIR (Louis Lafont de Sentenac - Outils Internes & NIPM) et MESULOG (Micaël Da Silva - WebServices et Luc Desruelle - Application Web WebVI avec LabVIEW NXG) pour les présentations.

Merci à National instruments France pour le parrainage du repas de clôture de cette belle journée.

IMG_6478.JPGIMG_6406.JPGIMG_6427.JPGIMG_6428.jpgIMG_6426.JPGIMG_6483.JPGIMG_6487.JPGIMG_6488.JPG

 

 

 

 

 

Rapport d'essai : Réaliser rapidement des rapports Microsoft Office Word et Excel avec LabVIEW et le Report Generation toolkit
06 juin 2019

Si vous avez besoin de réaliser des rapports d'essais, il est possible d'ajouter des fonctionnalités à LabVIEW grâce au « Toolkit Report Generation for Microsoft Office ». Le Toolkit ajoute un ensemble étendu de VI pour générer des rapports par programmation dans Microsoft Word ou Excel. 

 

Il y a principalement 3 méthodes pour réaliser un rapport avec le toolkit

 

  1. Un VI Express Microsoft Office Report permet de rapidement découvrir l'ensemble des possibilités. Personnellement je ne l'utilise pas, je n'utilise pas le VI Express, mais il permet de découvrir les possibilités.
  2. Une autre possibilité est d'utiliser les fonctions bas niveau, ou sous-VIs, pour générer complètement l'apparence du rapport, en partant d'une feuille vierge. Cette méthode nécessite plus de code et plus de temps.
  3. Sinon il est très facile de réaliser un classeur modèle sous Microsoft Excel, qui contient la présentation finalisée du rapport d'essai. Il suffit alors d'écrire les données au bon emplacement directement depuis LabVIEW. Lorsqu'il y a plusieurs campagnes de mesure pour un même test, il est possible dans le classeur modèle, d'avoir un onglet modèle à dupliquer pour chaque essai. Dans mon modèle, j'utilise alors la puissance du tableur "Microsoft Excel" pour ajouter des formules pour convertir des données brutes, calculer des statuts à partir de limites, afficher un graphique. Il est possible d'insèrer des macros VBA, et de les exécuter depuis LabVIEW.

La solution 3 a ma préférence.

 

Un exemple très simple peut être rapidement construit en réalisant un classeur Excel modèle, à partir de mesures. Dans le classeur modèle, nous réalisons toute la mise en page.

 

Excel rapport.png

 

La figure suivante présente le « Diagramme »  d'une application qui permet d'importer les mesures dans un classeur Modèle.

Les fonctions utilisées sont très simples.

  • « copier » un fichier, de la palette d'E/S sur fichier afin de dupliquer le classeur Excel modèle sous un nouveau nom.
  • Les mesures sont dans un tableau à deux dimensions de numérique, qui doit être converti en tableau de chaînes de caractères par la fonction « Nombre en chaîne fractionnaire ».
  • Pour insérer les données dans le classeur, la fonction de haut niveau « nouveau Rapport », avec le paramètre « Excel », permet d'ouvrir le fichier.
  • Puis la fonction spécifique « Excel insérer un tableau » copie les mesures à l'emplacement désiré, soit dans les cellules de coordonnées [2 ; 25].
  • L'appel de la fonction « Fermer le rapport » avec le paramètre « sauvegarder le classeur » finalise l'importation des données.

 

diagramme Excel.png

 

Le rapport est alors complet, échangeable par e-mail et peut être directement imprimé.

Ensemble de présentations techniques pour éviter les erreurs sous LabVIEW
06 juin 2019

Les plus grosses erreurs? d'un code sous LabVIEW ???

lesp lus grosses erreurs.png

lesp lus grosses erreurs2.png

 

1) Gestion de projet

journée LUGE 1.0 : Les outils qui nous veulent du bien

Plus de temps pour développer en LabVIEW, gestion «projet»

 

Exemples d’erreurs : bombe à retardement ou Grosses erreurs autour du développement logiciel (?)

  • Ne pas savoir où trouver de l’aide
  • Pas de logiciel de gestion de version
  • Pas de centralisation de l’information
  • Pas d’analyse ni de test du code source
  • Attendre la fin du projet pour générer l’exécutable
  • Pas de gestion de la machine de développement
  • Autres ?

Utiliser les logiciels de gestion code source (TortoiseSVN, Subversion), Machine Virtuelle, bug tacker, Forge, VI Analyzer, VI Package Manager

les outils qui nous veulent du bien.png

 

2) Technique, Gestion des données, accès concurrents, mémoire sous LabVIEW

Journée LUGE 3.0 : Darwin appliquée à LabVIEW : l’évolution de la gestion des données

version "full" en EN Darwin applied to LabVIEW: The evolution of the data management

Elle traite de l’évolution

  • du concept « mémorisation » du flux de données,
  • de la gestion des données sous LabVIEW
  • des accès concurrents

 

avec Contrôle vers indicateur -Locale -Globale -FGV -AE –SEQ -DVR -OOP –SM –QDMH.

 

La présentation vous permet de répondre à la "simple question" Pourquoi il faut éviter une locale, globale, nœud de propriété... et comment faire.

194993_darwin%20labview.png

 

 

3) Architecture : Les modèles de projet sous LabVIEW, zoom sur le QDMH (ou QMH)

 Journée rencontres LUGE 2016 : Les modèles sous LabVIEW, zoom sur le QDMH

 

  • Faire un point sur le modèle QDMH qui couvre un grand nombre d’application en restant abordable techniquement
  • Discussion sur Améliorations
  • Discussion sur Faiblesses / limitations
  • Continuer la discussion sur d’autres modèles connus, utilisées et avoir vos avis dessus.
  • Le but : Débuter avec le bon modèle…

QDMH.png

Votre évènement LabVIEW & TestStand dans la région Rhône-Alpes (Lyon - Grenoble - Chambéry - Annecy) : Le LabVIEW User Group Rhône-Alpes ! ou LUGE
14 mai 2019

Vous êtes dans la région Rhône-Alpes et vous êtes développeur LabVIEW / TestStand? Venez rejoindre les journées développeurs pour apprendre et partager >>> le user group LUGE

sans-titre.png

Avec NIDays Paris qui disparait à partir de cette année (et oui!!!) et les journées développeurs en région de National Instruments qui ont déjà disparues, nous avons le plaisir de voir progresser l'intérêt des réunions "LUGE", les journées des développeurs LabVIEW User Group de la région Rhône-Alpes. Mieux nous structurer va permettre de mieux organiser et donc de mieux réaliser le dernier évènement LabVIEW/TestStand local.

La gestion d'un groupe utilisateur LabVIEW, ou "USER GROUP" est divisée en 3 partie : "La partie évènementielle", 'les présentations Techniques" et "l'intendance de la journée".

  1. La partie "évènementielle" est gérée via le forum, par l'équipe LUGE. Elle ne change pas entre chaque journée. Il n'y a pas officiellement de "comité", mais elle est gérée par les membres actifs de la communauté LUGE, via le site internet. 
  2. La partie "technique" pour proposer des présentations et donner de son temps pour les faire. Nous cherchons toujours des présentateurs.
  3. La partie "intendance de la journée" change à chaque réception. Par tradition le sponsor journée est une entreprise. Il "reçoit".

     

Il faut les 3 parties pour réussir une journée de partage LUGE, de la communauté des développeurs de la région Rhône-Alpes. L'organisation de chacune des parties prend du temps. La finalité est le plaisir de partager nos connaissances, d'échanger et de nous rencontrer. L'investissement de chacun pour le collectif est mis en avant.

 

 

Principe de l'organisation

 

Point

Gestion

Quoi ?

Qui ?

N°1

La partie  évènementielle 

Définir l’agenda, la sélection des présentations + présentateurs, la relance via la liste de diffusion, contact avec interlocuteur de NI pour la publicité de l’évènement, gestion du site LUGE, etc.

 

Equipe « comité » organisation via le Forum du LUGE.

 

Les membres actifs du site LUGE.

N°2

La partie technique

Proposer et faire des présentations techniques

 

Toutes les personnes qui se proposent, et qui sont retenues via le Forum LUGE.

 

A la recherche de présentateur.

N°3

L’intendance de la journée « Hôte réception » :

 

organiser la salle, validation vidéoprojecteur, contacter traiteur pour « repas ou collation », gestion des frais de remboursement avec NI, gestion horaire

 

Entreprise qui gère la salle de réception.

 

Elle reçoit.

 

Les User Group US parlent du « sponsor de la journée »

 

 

Bon partage à tous, au plaisir d'échanger avec vous!

A+

Luc

 

 

De LabVIEW à NXG, la nouvelle génération de LabVIEW : Et vous, êtes-vous prêt pour cette révolution ?
12 août 2018

  

Cet article est détaillé dans le Chapitre 7 de la prochaine version du livre 
"LabVIEW programmation et application - Introduction à LabVIEW NXG" - 4ème édition
du 22/08/2018, aux éditions DUNOD - 560 pages - EAN13 : 978-210078283 Lien livre LabVIEW sur le site Amazon. Description détaillée du livre ici

 

7.1.1 - L’annonce de la Nouvelle génération en 2017

Chaque année, la société National Instruments organise sa grande manifestation « NIWeek » au Texas. NIWeek consiste en un grand show d’une semaine pendant lequel alternent, autour d’une salle d’exposition, des conférences de presse (« keynotes ») et des conférences techniques. Des experts reconnus y présentent en détails les produits matériels et logiciels de l’entreprise. Lors de la conférence d’ouverture de la manifestation, National Instruments annonce ses grandes nouveautés. Pour les ingénieurs et scientifiques qui utilisent des systèmes de test automatisé, c’est un peu Noël avant l’heure, c’est l’évènement de l’année à ne pas manquer.

Lors de la NIWeek 2017, National Instruments a dévoilé une très grande nouveauté, que la société préparait depuis quelques années. En effet, alors que nous étions habitués depuis 2009 à avoir une version de LabVIEW par millésime, National Instruments a présenté deux nouvelles versions : LabVIEW 2017, la version « Standard », et LabVIEW NXG 1.0, la « Nouvelle génération » (NeXt Generation).

 

LabVIEW 2017 est l’évolution annuelle de LabVIEW. C’est la version « Standard » (figure 7.1). L’environnement de développement est totalement dans la continuité de son prédécesseur LabVIEW 2016, ou que de son successeur LabVIEW 2018. En tant de développeur professionnel, mon avis est qu’elle n’apporte pas d’améliorations majeures. Je découvre quelques nouvelles fonctionnalités, certaines très intéressantes, mais que je qualifierais « de petites améliorations ». Les versions suivantes du LabVIEW millésimé resteront dans cette branche logicielle dite « standard ».

LabVIEW 2017LabVIEW 2017

 Figure 7.1 – LabVIEW 2017 est l’évolution annuelle de LabVIEW. C’est la version « Standard ».

 

LabVIEW NXG est la nouvelle génération du logiciel LabVIEW. Il n’est plus question d’évolutions mais de révolution (figure 7.2). Fruit de plusieurs années de recherche et développement, cette première version de NXG est bien le lancement de la nouvelle génération de LabVIEW. Au fil des années, elle doit devenir une « Better LabVIEW », une version plus crédible, plus ergonomique et plus performante de LabVIEW.

Pour des raisons évidentes le nom LabVIEW a été conservé. Mais ne nous y trompons pas, nous sommes bien sur deux versions indépendantes et incompatibles de l’environnement de développement. Le code de la version « standard » doit être migré, via un utilitaire, pour être utilisé sur la version « NXG ». Suite à cette conversion un « VI » devient un « GVI ». Par contre, il est impossible de faire le chemin inverse. Il n’est pas possible de convertir un code compilé dans l’environnement « NXG » vers la version « Standard ».

 

 LabVIEW NXG Panneau de mesureLabVIEW NXG Panneau de mesureLabVIEW NXG exemplesLabVIEW NXG exemples

Figure 7.2 – LabVIEW NXG est la nouvelle génération du logiciel LabVIEW.

 


7.1.2 L’anecdote historique, par les yeux du professionnel

NXG est né de la volonté d’un retour aux idées d’origine de la création de LabVIEW. Les idées « encore à implanter » que décrient Jeff KODOSKY dans la préface du livre, « revenir en mode invention, avec la possibilité d’aboutir à une réalisation aussi innovante que l’était LabVIEW 1 ».

 

Au détour de petites confidences faites par des membres de National Instruments, nous trouvons trace de l’idée de faire une « Better LabVIEW » ou nouvelle génération de LabVIEW au début des années 2000. Dans les années 2010, le programme prend de l’ampleur pour accélérer en 2014 avec les premières présentations à un cercle restreint de partenaires.

 

C’est un avis qui n’engage que moi (Luc DESRUELLE), mais je mets en parallèle l’effort énorme de NI pour développer cette version qui doit révolutionner « LabVIEW », et le sentiment que la version « standard » n’a plus d’ajout de fonctionnalités majeures depuis 2014.

 

Dès 2015, en tant que « Certifié Architect LabVIEW », j’ai eu le privilège de participer aux tests de la version « préliminaire » de NXG. Avec d’autres confrères, j’ai ainsi intégré le programme « Platform Developper Preview (PDP) ». La finalité de ce programme était d’ouvrir les tests de la version « Alpha » à des développeurs extérieurs à la société National Instruments. Je me souviens notamment avoir été sollicité, avec mon ami Olivier JOURDAN (LabVIEW Champion), pour la nouvelle traduction en français de « front-panel ». En effet par référence à la face-avant d’un instrument physique, la version « standard » utilise le terme anglais « front-panel » pour désigner l’interface utilisateur du programme, qui est un « Instrument Virtuel » en LabVIEW. La nouvelle version anglaise de NXG utilise le terme « Panel », dans l’objectif d’éloigner LabVIEW du lien trop étroit avec l’instrumentation physique et d’affirmer le code G en tant que langage de programmation plus général. Dans la version française fallait-il utiliser Panneau ? Face ? Panel ? UI ? Après de longues conversations, à peser les mots et leurs conséquences, la « face-avant » va devenir « Interface » (figure 7.3). C’est l’interface visuelle du programme, dans l’éditeur c’est l’interface entre le code et le développeur. Participer à cette aventure, même modestement, voire comment était géré un nouveau logiciel prochainement utilisé par des milliers d’utilisateurs dans le monde, a été un réel plaisir et une expérience enrichissante.

 

Peu à peu le programme de test de la version « Beta » a été ouvert à un public élargi au travers du « Software Technologie Preview ». Fin 2016, National Instruments a subtilement orchestré les fuites d’une nouvelle génération de logiciel. Des fonctionnalités très attendues par les développeurs ont été annoncées « En développement » sur le forum « LabVIEW idea exchange », l’espace de discussion des suggestions d’évolutions.

 

La nouvelle génération NXG version 1.0 a été officiellement annoncée le 23 mai 2017 lors du salon NIWeek. Cette première version ne présentait pas encore toutes les fonctionnalités de LabVIEW Standard, loin de là. Sous le slogan « Aussi productif que LabVIEW, la programmation en option », elle focalise l’attention sur le premier pilier de cette version qui est une nouvelle approche de l’automatisation des mesures, dans un seul logiciel et sans programmation. Cette première version est incomplète. Elle ne possède pas l’ensemble des fonctionnalités nécessaires à la programmation, ni l’ensemble du support matériel. Elle n’est qu’une première étape. Avec cette version incomplète, le public interprète parfois, et à tort, que cette version est juste un nouvel outil pour faciliter l’acquisition de données.

 

En 2018, elle sera suivie par la version NXG 2.0 et vraisemblablement par une autre version (dévoilée) lors de NIWeek 2018. Cette deuxième version amène véritablement les outils de développement nécessaires à la programmation en code G. C’est le deuxième pilier de la révolution. De nouvelles fonctionnalités sont dévoilées, comme les WebVIs. Cette révolution est tellement ambitieuse, qu’elle se déroule par étapes successives. Il faudra attendre 2019 pour avoir une grande partie des concepts et toolkits équivalents à la version standard, dans cet environnement innovant, modernisé et résolument tourné vers le futur de LabVIEW.

 

A l’heure où j’écris ces lignes, il est toujours possible de s’inscrire au programme « Aperçu Technologie des logiciels de NI » pour obtenir et tester la version « Béta » la plus récente du logiciel LabVIEW NXG. Il est ainsi possible de faire des commentaires et proposer des idées qui auront un impact direct sur le développement du logiciel.

Et vous, êtes-vous prêt pour cette révolution ?


La peur de ne pas retrouver l’outil de ses rêves.

En 2015 lors d’une avant-première de la version Alpha de NXG, dans une salle feutrée au public confidentiel, ma première pensée aura été la peur. Cela peut sembler exagéré. Mais lorsque nous maitrisons un outil, que nous l’utilisons au quotidien, que nous prenons beaucoup de plaisir à l’utiliser, c’est bien la peur du changement qui est le premier sentiment qui me vient. La peur de ne plus retrouver ses habitudes. La peur de ne pas retrouver l’outil de ses rêves. Mais il faut accepter le changement. Sortir de sa zone de confort. A l’identique de la théorie de l’évolution de Charles Darwin, « Dans la lutte pour la survie, les espèces les plus fortes sont celles qui s’adaptent le mieux au changement de leur environnement ». Il est vrai que pour survire il faut s’adapter, évoluer pour s’améliorer. Cela est également vrai dans le monde du logiciel.

 

7.1.3 Ce qui n’a pas changé : LabVIEW reste LabVIEW

« Vous avez aimé LabVIEW, vous aimerez LabVIEW nouvelle génération », sont les premiers mots que les ingénieurs de National Instruments prononcent lorsqu’ils dévoilent le nouvel environnement. Cette promesse doit nous rassurer. C’est évidemment un des premiers piliers du cahier des charges de NXG. Avant de décrire en détail ce qui a changé avec LabVIEW NXG, commençons ce chapitre par ce qui n’a pas changé.

 

Pour faire un petit rappel théorique du chapitre 1 sur « les concepts et l’environnement de programmation », LabVIEW propose un cadre de programmation graphique, basé sur le principe de « flux de données » et enrichi des deux extensions « mémorisations » et « structures de programmation ». Ce langage de programmation est appelé « langage G » ou « code G ». L’intérêt premier de la programmation graphique est que le code est représenté par un « schéma », par opposition aux « mots » du langage textuel. Le code obtenu est ainsi plus intuitif et naturel. Comme il a été également détaillé dans le chapitre 3, LabVIEW est un langage compilé. La compilation signifie que le code G est traduit en code machine, et qu’il est exécuté directement par l’ordinateur. Ce processus travaille pour nous en optimisant fortement le code pour améliorer la gestion mémoire et les performances d’exécution (cf §3.1.2).

 

L’environnement de développement LabVIEW permet de manipuler une grande variété de concepts, tel que :

  • Les terminaux, représentent la production et consommation de données ;
  • Les nœuds, traitement à effectuer qui sont représentés par une figure, et possèdent des connexions d’entrée et de sortie ;
  • Les fils de liaison, relient nœuds et terminaux, ils permettent le passage des données ;
  • Le flux de données, propagation des données, par les fils de liaison entre les terminaux et les nœuds. Un nœud ne s’exécute que si l’ensemble des données d’entrées sont disponibles ;
  • La mémorisation des données, pouvoir réutiliser des données produites ;
  • Les structures de programmation, gérer des choix et des itérations ;
  • La programmation objet, la gestion évènementielle, l’encapsulation, le typage de données, etc.

 

La nouvelle génération NXG reste LabVIEW (voir figures 7.3 et 7.4). Un environnement de développement, orienté test et mesure, qui permet de programmer en code G dans un diagramme. Le code graphique reste. L’ensemble des concepts qui en font la puissance reste inchangé. Les terminaux, les nœuds, les structures, la propagation du flux de données sont présents (ou seront présents dans les versions prochaines). Les bibliothèques d’intégration du matériel d’acquisition (DAQmx) et des instruments (VISA, IVI) restent. Les outils sont toujours disponibles au-travers d’une palette.  Le principe et la philosophie de la programmation en code G restent inchangés. Un point également très important à retenir, le compilateur est le même (cf §3.1.2).

 

 

LabVIEW NXG reste LabVIEWLabVIEW NXG reste LabVIEW Figure 7.3 – LabVIEW NXG reste LabVIEW

 

 

Le même code en LabVIEW Standard et NXGLe même code en LabVIEW Standard et NXG

 Figure 7.4 – Le même code en LabVIEW Standard et NXG.

 

LabVIEW reste le même LabVIEW que celui que nous aimons. Lorsque j’entends cette nouvelle et je l’écris avec beaucoup d’humour, et en tant qu’auteur du livre je pousse un soulagement. Je n’ai pas besoin de réécrire l’ensemble du livre.

  • En effet le chapitre 1 qui décrit les concepts et l’intérêt de la programmation graphique, qui permet de représenter du code par un schéma, reste inchangé.
  • De même le chapitre 3 qui décrit les « bonnes règles » de développement afin que le code soit maintenable, évolutif, performant et compréhensible par d’autres concepteurs d’applications est toujours valable.
  • Pour les chapitres 4 et 5, là encore, les principes et structures pour acquérir, analyser et présenter les données par programmation sont toujours vrais.

 

Sur le fond, les compétences que doit avoir « un bon programmeur G » s'appliquent toujours. Pour aller dans ce sens les certifications délivrées par National Instruments et qui ont été obtenues avec la version standard de LabVIEW sont toujours valables : certifications développeur « CLAD » & « CLD » et certification architecte « CLA ». Les fondements de LabVIEW sont inchangés. Un LabVIEW Champion est toujours compétent sous NXG. Ce qu’un développeur peut faire dans LabVIEW 2018, il sera capable de le faire dans LabVIEW NXG, dans quelques années lorsque cette version aura toutes les fonctionnalités.

 

Sur la forme, l’éditeur de l’environnement NXG a évolué pour être plus intuitif et s’éloigner du concept de l’instrument physique. De nouveaux concepts apparaissent, comme des interfaces interactives pour réaliser des mesures sans programmation. Le développeur devra donc changer quelques habitudes. Le chapitre 2 qui présente les éléments de base de la programmation LabVIEW, ainsi que la démarche à suivre pour l’élaboration d’un programme dans l’environnement « Standard » vont donc être repris dans ce chapitre, avec la version NXG.

 

Bousculer les habitudes, pour apporter une amélioration

Dans le domaine du test et de la mesure, la plate-forme de développement LabVIEW est le logiciel de référence. « Bousculer » les habitudes des utilisateurs est un exercice qui peut s’avérer parfois périlleux. National Instruments prend des risques avec cette version. Tout en gardant la philosophie et les principes du succès de LabVIEW « Standard », la nouvelle version a l’ambition de révolutionner deux concepts :

  • Pour les non développeurs, permettre de réaliser simplement des mesures sans faire de code ;
  • Pour les développeurs, moderniser l’environnement de développement et ajouter des nouvelles fonctionnalités très attendues.

 

LabVIEW NXG et les WebVIs : Introduction à utilisation du module LabVIEW NXG Web
12 août 2018

Disponible depuis LabVIEW NXG 2.0, l'utilisation du module LabVIEW NXG Web permet de réaliser des applications Web à partir des WebVIs. 

  

Cet article est détaillé dans le Chapitre 7 de la prochaine version du livre 
"LabVIEW programmation et application - Introduction à LabVIEW NXG" - 4ème édition
qui sortira le 22/08/2018, aux éditions DUNOD - 560 pages - EAN13 : 978-210078283 Lien livre LabVIEW sur le site Amazon. Description détaillée du livre ici

 

C’est surement une des fonctionnalités les plus attendues de LabVIEW NXG 2.0.

 

Avec la généralisation des tablettes et smartphones, les développeurs réclament la possibilité d’utiliser leur logiciel au travers d’une interface Web. Mais toujours dans l’esprit de LabVIEW donc sans faire de code textuel. LabVIEW doit permettre de créer facilement des applications Web en s’appuyant sur des technologies standards.

 

Depuis la version 2.0, NXG répond à cette demande. L’éditeur permet de placer des objets HTML5 et de générer le code. Il est possible de modifier le code source HTML, soit pour ajouter des fonctionnalités avec du code JavaScript, soit pour personnaliser l'apparence des contrôles en utilisant une feuille de style CSS (Cascading Style Sheets). Vous pouvez modifier des propriétés telles que la police, la couleur, la forme ou la disposition d'un contrôle.

 

Dans la version standard de LabVIEW, il existe déjà une fonctionnalité permettant de se connecter à la face-avant d’un VI depuis une interface web. Mais cette fonctionnalité nécessite d’installer le RunTime LabVIEW, qui ne supporte pas toutes les plates-formes, et d’activer un plugin Web qui n’est compatible qu’avec certains navigateurs internet. Avec NXG finit les limitations. Les WebVIs peuvent être déployés sur toutes les plateformes, sur n'importe quel navigateur et sans plug-ins.

 

 

 

Application Web avec les WebVIs de LabVIEW NXGApplication Web avec les WebVIs de LabVIEW NXG

 

Figure 7.10 –NXG permet de concevoir et de déployer des interfaces web

 

L'utilisation du module est décrit en détail dans le livre "LabVIEW Programmation et applications - Introduction à LabVIEW NXG"  – 4iéme édition parution 2018 aux éditions DUNOD.

 

LabVIEW NXG : Mes 7 fonctionalités préférées
12 août 2018

Un an après la sortie officielle de la première version de LabVIEW NXG, à NIWeek 2017, et après avoir bien travaillé avec les versions 1.0, puis 2.0, et actuellement la 3.0 beta, je vous présente mes 7 fonctionnalités préférées. Ce sont souvent des fonctionnalités que les développeurs réclamaient sur le forum « LabVIEW idea exchange ».

 

1- Le zoom et les objets vectoriels font leur apparition

C’est la fonctionnalité la plus acclamée, voir la plus applaudie, lors des présentations dévoilant la nouvelle génération de LabVIEW.

  • Sur l’interface : Avec NXG les objets graphiques sont vectoriels et il devient possible de zoomer sur l’interface avec un rendu de très grande qualité.
  • Sur le diagramme : Zoomer dans un diagramme est une demande autant décriée par certains que réclamée avec insistance par d’autres. Les détracteurs l’associent à un manque de modularité. Les partisans réclament de pouvoir gérer la visualisation globale ou sur un détail du code. LabVIEW étant un langage graphique, qui représente le code par un schéma, je pense qu’il est légitime de permettre de zoomer

 

Le zoom et les objets vectoriels font leurs apparitionsLe zoom et les objets vectoriels font leurs apparitions

 

2 - Construire une application Web avec les WebVIs. Disponible dans le module LabVIEW NXG Web.

C’est surement la deuxième fonctionnalité la plus attendue. Avec la généralisation des tablettes et smartphones, les développeurs réclament la possibilité d’utiliser leur logiciel au travers d’une interface Web. Mais toujours dans l’esprit de LabVIEW donc sans faire de code textuel. Depuis la version 2.0, NXG répond à cette demande. L’éditeur permet de placer des contrôles HTML5 et de générer le code. Il est possible de modifier le code source HTML, soit pour ajouter des fonctionnalités avec du code JavaScript, soit pour personnaliser l'apparence des contrôles en utilisant une feuille de style CSS (Cascading Style Sheets). Dans la version standard, il existe déjà une fonctionnalité permettant de se connecter à la face-avant d’un VI depuis une interface web. Mais cette fonctionnalité nécessite d’installer le RunTime LabVIEW, qui ne supporte pas toutes les plates-formes, et d’activer un plugin Web qui n’est compatible qu’avec certains navigateurs internet. Avec NXG finit les limitations. Les WebVIs peuvent être déployés sur toutes les plateformes, sur n'importe quel navigateur et sans plug-ins.

 

La fonctionnalité est très bien. J'adore! Il est possible de connecter très facilement l'application Web à un vi LabVIEW ou à un gvi LabVIEW NXG.    

 

Construire une application Web avec les WebVIs sous LabVIEW NXGConstruire une application Web avec les WebVIs sous LabVIEW NXG

 

 

3 - L’Unicode devient natif.

Malgré la réalisation d'applications qui devaient gérer plusieurs langues (à l'affichage), je n'ai jamais sollicité cette évolution. Mais beaucoup de développeurs réclamaient cette évolution depuis plusieurs années!!

L’intérêt de l’Unicode est de pouvoir gérer de façon unique un caractère indépendamment de la langue. Dans la version standard de LabVIEW, il faut changer les paramètres du système d’exploitation pour gérer correctement les différentes langues. NXG gère le standard Unicode en natif (UTF8). Il est maintenant possible d’afficher des textes en français ou chinois ou russe en même temps et sans changer les paramètres de l’OS.

 

L’Unicode devient natifL’Unicode devient natif

 

 

4 - Génération de rapport Excel, sans Excel.

Permet de générer des rapports Excel sans Excel... permet de limiter l'achat de licence, donc forcement cela permet de généraliser l'utilisation de cette technologie.

Amélioration des outils de génération de rapport au format Microsoft, sans avoir Word ou Excel installés sur l’ordinateur. Vous avez la possibilité d'exporter vos mesures dans un fichier au format Microsoft Excel existant ou de créer un nouveau fichier par programmation.

 

5 - NI Package Manager (NIPM).

C’est le nouveau gestionnaire de paquets de National Instruments.

Il remplace l’incontournable VI Package Manager (VIPM). Le gestionnaire automatise le processus d’installation, de désinstallation et de mise à jour de paquets. Avec la nouvelle version NXG, National Instruments modifie sa philosophie de gestion des fichiers informatiques en généralisant l’utilisation de ce format.

 

 

NI Package Manager (NIPM) remplace le VIPMNI Package Manager (NIPM) remplace le VIPM

 

6 - SystemDesigner.

C'est la fonctionnalité mise en avant par National Instruments. 

En mode En Ligne : Rechercher, identifier, configurer et documenter les éléments de votre système matériel à partir d’une interface interactive, et intégrée à NXG.

En mode Conception, il est possible de créer une configuration, avec du matériel non connecté, en utilisant l'intégralité des produits du catalogue de National Instruments.

 

 

Intégré dans NXG : Rechercher, identifier, configurer et documenter les éléments de votre système matérielIntégré dans NXG : Rechercher, identifier, configurer et documenter les éléments de votre système matériel

 

7 - Capture et analyse des données de l’environnement de développement.

Pour finir, ma fonctionnalité préférée.

Sa portée est très vaste, puisqu’elle est utilisable dans l’ensemble de l’environnement NXG. Elle permet aussi bien la capture et l’analyse de signaux d’acquisition sur le matériel connecté que la mise au point de code pour le développeur. Je trouve cette fonction très bien pensée. Les données collectées sont ensuite disponibles dans la fenêtre d'affichage des données capturées (Data Viewer).

Je me demande encore comment j'arrivais à mettre au point une application sans (?)

 

 

Capture et analyse des données de l’environnement LabVIEW NXGCapture et analyse des données de l’environnement LabVIEW NXG

 

Pour en discuter...

 

 

Cet article est détaillé dans le Chapitre 7 de la prochaine version du livre 
"LabVIEW programmation et application - Introduction à LabVIEW NXG" - 4ème édition
qui sortira le 22/08/2018, aux éditions DUNOD - 560 pages - EAN13 : 978-210078283 Lien livre LabVIEW sur le site Amazon. Description détaillée du livre ici

 

 

Détail du nouveau livre de référence "LabVIEW : Programmation et applications" - chapitre introduction à LabVIEW NXG
12 août 2018

 

Livre_NXG_couverture2.jpgCo-écrit par Luc DESRUELLE, professionnel reconnu de la communauté LabVIEW, ce livre complet et progressif s’adresse du débutant au développeur expérimenté.

 

Date de parution : 22/08/2018 - Éditeur Dunod - 4ème édition - 560 pages - EAN13 : 978-210078283 - Lien livre LabVIEW sur le site Amazon

 

Cet ouvrage permet progressivement au lecteur de s’initier aux bases du langage de développement LabVIEW puis aux techniques avancées afin de pouvoir réaliser une application dans les règles de l’art. Il dévoile des précieuses astuces d’un développeur professionnel pour obtenir un code performant et comprendre les concepts nécessaires à la préparation de l'examen Certifié LabVIEW Développeur (CLD). Au fil du livre des exemples concrets et tous téléchargeables gratuitement permettent d'illustrer en détail les domaines abordés.

 

 

Cette quatrième édition s’enrichit d’un chapitre consacré à  LabVIEW NXG, la nouvelle génération de l’environnement de développement LabVIEW. Les principes de la programmation en code G restent identiques entre les deux versions de LabVIEW. Mais l’éditeur a été révolutionné pour être plus intuitif, plus moderne, plus ergonomique et s’éloigner du concept de l’instrument physique. De puissants nouveaux concepts apparaissent.5_SystemDesigner-EnLigne-Copyright.png

  • Description des nouvelles fonctionnalités ;
  • Apprentissage de l’utilisation du nouvel éditeur ;Interfaces interactives pour réaliser des mesures sans programmation et System Designer ;
  • Zoom, Unicode et objet vectoriel ;2_WebVI-Copyright.pngApplications Web avec les WebVIs, génération de code HTML, feuille de style CSS et intégration JavaScript ;
  • Capture des données, exportation et importation ;
  • Analyse détaillée de la méthodologie d’une migration de code de LabVIEW Standard vers NXG, à partir d’un projet ;
  • Glossaires de synthèse ;

 

Le livre  aborde de façon très pédagogique les capacités spécifiques de LabVIEW pour l’acquisition, l’analyse et la présentation des données.

  • L'acquisition de données sur les cartes National Instruments (driver DAQmx, utilisation MAX, assistant DAQ, acquisition point à point & fini & continu);
  • Le pilotage d'instruments (série, GPIB, LXI, PXI, PCI) en VISA & IVI et la réalisation de driver Plug & Play VISA;
  • Introduction aux systèmes temps réel RT & FPGA;
  • Le traitement du signal, filtrage et analyse mathématique;
  • La sauvegarde des données (fichier texte, tableur, ini, base de données);
  • La génération de rapport professionnel au format Microsoft Office (report generation toolkit)
  • L'échange de données via TCP IP;
  • et autres...

 

Des techniques de programmation suivantes sont abordées :

  • Flux de données ;
  • Modèle d’architecture  de programme ;
  • Respect des bonnes règles de développement de National Instruments ;
  • Gestion des erreurs ;
  • La gestion des données : locale, globale, nœud de propriété, variables fonctionnelles (FGV), Action Engine (AE), programmation Objet (OOP), DVR;
  • Les modèles de projet (VI général, machine à états, producteur/consommateur événementiel, boite de dialogue)
  • Réalisation d’une Interface Homme Machine (IHM) simple et esthétique ;
  • Sauvegarde des mesures dans un fichier tableur
  • Réalisation d’un rapport d’essai sous Excel, avec mise en forme et directement imprimable ;
  • Génération exécutable.

 

 exemple du contenu du livre 

LabVIEW NXG : Mes 7 fonctionnalités préférées

LabVIEW NXG et les WebVIs : Introduction à utilisation du module LabVIEW NXG Web

De LabVIEW à NXG, la nouvelle génération de LabVIEW : Et vous, êtes-vous prêt pour cette révolution

 

LUGE 5 : ma présentation LabVIEW NXG
18 juin 2018

Bonjour à tous, je vous présente la présentation que j'ai faite au LUGE 2018 sur LabVIEW NXG : mes 7 fonctionnalités préférées.46ef9579-d640-438e-9cab-edb50f1fd59e-original.png

 

 

 

La présentation est détaillée dans un article sur mon blog LabVIEW : ici.

 

Retour rapide sur cette très belle journée du jeudi 15 juin 2018, pour le LUGE 5.0 : le User Group des développeurs LabVIEW / TestStand en Rhône-Alpes. 

 

La journée du LUGE 2018 a été une très belle réussite. Le contenu technique des présentations a été très riche (LabVIEW NXG, WebVI, méthode Agile, Malleable VI,…), le nombre des développeurs présents a atteint un record avec une quarantaine de passionnés, l’échange de retour d’expérience a été bouillonnant et l’ambiance a été autant conviviale que chaleureuse

 

Bonne lecture et A+ Luc

LUGE 5 retour sur une journée riche en échange
15 juin 2018

Retour rapide sur cette très belle journée du jeudi 15 juin 2018, pour le LUGE 5.0 : le User Group des développeurs LabVIEW / TestStand en Rhône-Alpes. 

LUGE 5 retour sur une journée riche en échange

 

La journée de hier a été une très belle réussite. Le contenu technique des présentations a été très riche (LabVIEW NXG, WebVI, méthode Agile, Malleable VI,…), le nombre des développeurs présents a atteint un record avec une quarantaine de passionnés, l’échange de retour d’expérience a été bouillonnant et l’ambiance a été autant conviviale que chaleureuse.

 

Le LUGE s’impose indéniablement comme la rencontre incontournable pour les développeurs LabVIEW / TestStand de la région Rhône-Alpes.

 

Merci encore aux équipes SAPHIR et MESULOG pour l’organisation et les présentations.

Merci à National instruments France pour le parrainage du repas de clôture de cette belle journée.

 

LUGE : LabVIEW User Group des développeurs en Rhône-AlpesLUGE : LabVIEW User Group des développeurs en Rhône-AlpesLes développeurs en Rhône-AlpesLes développeurs en Rhône-AlpesLuc Desruelle présente LabVIEW NXG et les WebVILuc Desruelle présente LabVIEW NXG et les WebVILes développeurs en Rhône-AlpesLes développeurs en Rhône-AlpesLes développeurs en Rhône-AlpesLes développeurs en Rhône-Alpes

Le 14 juin 2018 dans la région de Grenoble : Rencontre développeurs LabVIEW / TestStand : LUGE 5.0
02 mai 2018

 LabVIEW User group de la région Rhône-Alpes prochaine rencontre à Barraux (38), dans les environs de Grenoble

La prochaine rencontre aura lieu le 14 juin 2018 de 13h à 18h à Barraux (38) dans les environs de Grenoble

Le groupe est encadré par une équipe de développeurs passionnés et compétents. Convivialité rime avec compétence. Sont présents à nos rencontres des certifiés architectes / développeurs LabVIEW et TestStand, ainsi que des LabVIEW Champion.

Le seul mot d'ordre : "partager, apprendre, découvrir ce que permet LabVIEW, avec enthousiasme et bonne humeur" !

 Venez apporter votre pierre à la réussite de ces rencontres.

Dans le partage et la convivialité, l’objectif est d’amener les participants à franchir des paliers dans leur pratique de LabVIEW. Sont régulièrement au programme les bonnes règles de développement, l’utilisation des exemples de projets, la découverte de nouvelles technologies, l’analyse de code, l’assistance sur un code problématique, les interfaces utilisateurs.

A+

 

 

LabVIEW User Group de la région de Grenoble (LUGE)LabVIEW User Group de la région de Grenoble (LUGE)

 

 

 

zoom sur LabVIEW en mode Client & Serveur OPC
02 oct. 2017

1) Introduction Simple : Par OPC il y a la notion de serveur et de client.

pour faire très simple

  • Le serveur gère la publication des informations entre les clients et les équipements (classiquement un driver communique avec des équipements et permet la lecture / écriture des données, via un nom unique le tag),
  • les clients vont se connecter aux Tags du serveur (nom unique) pour faire une lecture ou écriture de la donnée.

 L'article suivant est très bien "Connexion à des systèmes OPC avec LabVIEW"

http://zone.ni.com/reference/fr-XX/help/371361N-0114/lvconcepts/opc_intro/

 

loc_eps_localopc.gif

 

La fondation OPC définit 8 spécifications :

  • OPC Data Access (DA)
  • OPC Alarms and Events
  • OPC Batch
  • OPC Data eXchange
  • OPC Historical Data Access
  • OPC Security
  • OPC XML-DA
  • OPC Unified Architecture (UA)

 

2) LabVIEW en client OPC :

Si vous avez à disposition un serveur OPC, qui permet donc de publier les données d'un équipement, vous avez besoin d'utiliser LabVIEW comme client OPC.

 

Il y a un bon article : Développement de clients OPC dans LabVIEW (Windows uniquement)

http://zone.ni.com/reference/fr-XX/help/371361N-0114/lvconcepts/opc_dev_clients/

 

Pour résumer :

NI LabVIEW gère la compatibilité avec 2 spécifications OPC. Il faut donc identifier si le serveur est de type :

  • DA : OPC Data Access (DA)
  • UA : OPC Unified Architecture (UA)

 

2.1 Si le serveur est OPC DA

OPC DA est la plus ancienne, et il existe 3 versions, en fonction des versions des possibilités avec LabVIEW

  • Version 1.0 : 1 possibilité : il faut utiliser l'API DataSocket pour faire un Client OPC.
  • Version 2.x— 3 possibilités : Possibilité d'utiliser l'API DataSocket, ou (Module DSC payant) DSC OPC Client,
  • Version 3.0 — 2 possibilités : (Module DSC payant) DSC OPC Client.

2.2  Si le serveur est OPC UA

OPC UA : il faudra les toolkits payant DSC ou RT pour utiliser l'API OPC UA (en client ou serveur)

 

 

3) Faire un serveur OPC avec NI LabVIEW

Pour faire un serveur OPC avec LabVIEW il faudra s'orienter vers

  • Serveur OPC DA 2.x et 3.0 utiliser le serveur de variable partagée
  • Serveur OPC UA utiliser DSC ou RT OPC UA

plus d'informations sur le Moteur de variable partagée (MVP) ou Shared Variable Engine (SVE) en serveur OPC Data Access

http://zone.ni.com/reference/en-XX/help/371361K-01/lvconcepts/opc_conn_from_tpclients/

 

LabVIEW 8.0 or later contains an OPC server called the Shared Variable Engine (SVE). The SVE supports OPC Data Access 2.x and OPC Data Access 3.0. You can publish data from the SVE using shared variables.

To connect to the SVE from a third-party OPC client, use the ProgID National Instruments Variable Engine. If the OPC client allows you to browse for OPC servers, you can locate the National Instruments Variable Engine under OPC version 2.x or 3.0, depending on which versions the client supports.

In the third-party OPC client, you can browse all data items published by the SVE. The SVE allows connections to scalars and arrays of scalars but does not recognize data items of complex data types, such as clusters. You can browse FieldPoint and DAQ data items under their device categories.

 

 

4) un exemple de lecture de données OPC : Client OPC LabVIEW via DataSocket

Personnellement pour communiquer avec des serveurs OPC, comme j'ai très souvent des serveurs OPC DA version 1 ou 2.x, alors J'utilise l'API DataSocket

dsread.gif

 

avec

URL Exemple

opc

opc:\National Instruments.OPCTest\élément1

opc:\\computer\National Instruments.OPCModbus\Modbus Demo Box.4:0

opc:\\computer\National Instruments.OPCModbus\Modbus Demo Box.4:0?updaterate=100&deadband=0.7

 

Un exemple dans les exemples de LabVIEW

C:\Program Files (x86)\National Instruments\LabVIEW 2015\examples\Data Communication\DataSocket\DataSocket OPC\Monitor OPC Items with DataSocket.vi

Clinet OPC.png

 

Ou via l'aide

http://zone.ni.com/reference/fr-XX/help/371361N-0114/lvcomm/datasocket_read/

 

Exemple Reportez-vous au fichier Simple DataSocket.lvproj, dans le répertoire labview\examples\Data Communication\DataSocket\Simple DataSocket, pour obtenir un exemple d'utilisation de "DataSocket Lire".

 

5) Décoder le code qualité OPC de la valeur

 

Utilisez la valeur du code qualité pour obtenir des informations sur l'état de la valeur OPC (192 = Good)

 

Il existe des OPC DA Quality Codes que nous pouvons lire via la variable "qualité" de l'API DataSocket

dsread.gif

 

0

0x00000000

Bad [Non-Specific]

4

0x00000004

Bad [Configuration Error]

8

0x00000008

Bad [Not Connected]

12

0x0000000c

Bad [Device Failure]

16

0x00000010

Bad [Sensor Failure]

20

0x00000014

Bad [Last Known Value]

24

0x00000018

Bad [Communication Failure]

28

0x0000001C

Bad [Out of Service]

64

0x00000040

Uncertain [Non-Specific]

65

0x00000041

Uncertain [Non-Specific] (Low Limited)

66

0x00000042

Uncertain [Non-Specific] (High Limited)

67

0x00000043

Uncertain [Non-Specific] (Constant)

68

0x00000044

Uncertain [Last Usable]

69

0x00000045

Uncertain [Last Usable] (Low Limited)

70

0x00000046

Uncertain [Last Usable] (High Limited)

71

0x00000047

Uncertain [Last Usable] (Constant)

80

0x00000050

Uncertain [Sensor Not Accurate]

81

0x00000051

Uncertain [Sensor Not Accurate] (Low Limited)

82

0x00000052

Uncertain [Sensor Not Accurate] (High Limited)

83

0x00000053

Uncertain [Sensor Not Accurate] (Constant)

84

0x00000054

Uncertain [EU Exceeded]

85

0x00000055

Uncertain [EU Exceeded] (Low Limited)

86

0x00000056

Uncertain [EU Exceeded] (High Limited)

87

0x00000057

Uncertain [EU Exceeded] (Constant)

88

0x00000058

Uncertain [Sub-Normal]

89

0x00000059

Uncertain [Sub-Normal] (Low Limited)

90

0x0000005a

Uncertain [Sub-Normal] (High Limited)

91

0x0000005b

Uncertain [Sub-Normal] (Constant)

192

0x000000c0

Good [Non-Specific]

193

0x000000c1

Good [Non-Specific] (Low Limited)

194

0x000000c2

Good [Non-Specific] (High Limited)

195

0x000000c3

Good [Non-Specific] (Constant)

216

0x000000d8

Good [Local Override]

217

0x000000d9

Good [Local Override] (Low Limited)

218

0x000000da

Good [Local Override] (High Limited)

219

0x000000db

Good [Local Override] (Constant)

 

 

Pilotage des instruments avec LabVIEW et VISA (driver d’instruments)
16 août 2017
Cet article est constitué d’extraits du livre français sur LabVIEW : « LabVIEW programmation et applications ». Il ne traite que de la réalisation d’un driver d’instrument en VISA. Pour des informations plus complètes sur DAQmx, IVI, les commandes E/S directes, dll externe, la réalisation de driver Plug & Play LabVIEW, la recherche de driver IDNet, etc… je vous conseille le chapitre 4 qui aborde cela en détail.

 

1      Rappel : Le driver (ou pilote) et le logiciel d’application

Les architectures des instruments et des cartes d'acquisition (DAQ) font apparaître deux éléments communs que sont le driver et le logiciel d’application.

 

Le logiciel d’application (ou l’application principale) est le code réalisé pour permettre à l’utilisateur de piloter la chaîne d’instrumentation, analyser, sauvegarder et présenter les données.

 

Le driver est le programme qui fait le lien entre le logiciel d’application et le matériel. Il est chargé de traduire les commandes LabVIEW pour les rendre compréhensibles par la carte ou l’instrument. Il facilite le travail des développeurs en évitant une programmation fastidieuse et spécifique dans les registres bas niveau de la carte. Voici quelques exemples :

  • Les cartes d’acquisition et de génération de signaux : National Instruments fournit un driver unique qui est compatible avec toutes les cartes, qui est NI-DAQmx.
  • Les instruments : nous utiliserons le driver VISA ou IVI ou un driver spécifique livré par le fabricant avec le matériel. Sous LabVIEW, un driver d’instrument est un ensemble de VIs contenant des fonctions de haut niveau qui permettent de contrôler cet instrument, telles que la configuration, la lecture des mesures, etc. Il inclut et rend donc transparent les commandes de l’appareil et le protocole de communication spécifique au bus. La liste des commandes est décrite dans le manuel de programmation de l’instrument et elle va permettre de coder le driver de l’instrument.

2      Rappel VISA - Virtual Instrumentation Software Architecture

Au début des années 1990 le consortium VXIplug&play Systems Alliance a développé la spécification du logiciel d’E/S VISA, pour Virtual Instrumentation Software Architecture. VISA définit des fonctions d’entrées/sorties standard pour la programmation d'instruments. Ces fonctions :

  • s’interfacent toujours de la même manière quel que soit le matériel de connexion (GPIB, Série, USB, Ethernet, PXI, VXI) ;
  • sont indépendantes de la plate-forme matérielle et système d’exploitation.

Par exemple, un programme développé sur PC Windows pour piloter un oscilloscope en liaison GPIB sera identique à un programme développé sous Linux pour le piloter par une liaison série.

Les drivers « LabVIEW Plug & Play » et « IVI » utilisent la puissante librairie d’entrées / sorties de VISA VISA I/O.

Les drivers LabVIEW plug&play et IVI s’appuient sur la puissante librairie VISA. VISA permet d’avoir des fonctions logiciels identiques quelle que soit la connexion (GPIB, Série, USB, Ethernet, etc.).Les drivers LabVIEW plug&play et IVI s’appuient sur la puissante librairie VISA. VISA permet d’avoir des fonctions logiciels identiques quelle que soit la connexion (GPIB, Série, USB, Ethernet, etc.).

3      Zoom sur les fonctionnalités de VISA

L’API du driver VISA, Virtual Instrumentation Software Architecture, installe sous LabVIEW une bibliothèque de fonctions constituées de VIs et de propriétés.

Dans la réalité, seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers : Ouverture, fermeture, temps d'attente, lecture, écriture et paramètrage.

 

Ouverture, Fermeture de la communication et Timeout

Ces trois fonctions (ouverture, fermeture et timeout) sont disponibles dans la palette VISA avancée. Ce sont les trois paramètres de base de la communication avec un instrument de mesure :

1. Un driver commence toujours par un VISA Open qui permet d’ouvrir une session sur le périphérique spécifié, à faire une seule fois en début de programme ;

2. La fonction d’ouverture est toujours suivie par la configuration du TimeOut, qui est le temps d’attente maximum lors d’une interrogation sur l’instrument, par défaut 10 secondes. Elle est disponible au travers d’une propriété ;

3. Le code du driver se termine toujours par un VISA Close qui permet de fermer la session sur le périphérique (à faire une seule fois uniquement en fin de programme).

Écriture des données dans l’instrument

4. Pour écrire des données dans l’instrument, on utilise VI VISA Write. Nous utiliserons uniquement la communication basée sur des messages, c’est-à-dire avec l’envoi de chaînes de caractères ASCII, et pas celle basée sur l’écriture de registre.

Lecture des données dans l’instrument

5. Pour la lecture des données retournées par l’instrument, on utilise VI VISA Read. Il est très important de comprendre que cette fonction retourne les données contenues dans le buffer dès qu’une de ces 3 conditions est présente :

      • Un caractère de terminaison est arrivé ;
      • Le nombre d’octets dans le buffer de réception est égal à celui passé en paramètre à la fonction VISA Read ;
      • Le temps d’attente a dépassé le TimeOut. Dans ce cas LabVIEW retourne un code d’erreur, 0xBFFF0015, le délai d’attente (timeout) a expiré avant que l’opération ne soit achevée.

Paramétrage du port série

6. Il faut configurer les paramètres du port série de l’ordinateur pour être en adéquation avec la configuration du protocole de l’instrument, via la fonction VISA Configure Serial Port.vi de la sous-palette Série. En effet, la communication série autorise des options de paramétrages, comme le baud rate, le nombre de bits de données, la parité, le timeout mais également l’activation et la définition du type de caractères de fin de communication.

Nom de la ressource VISA

L’API VISA est une interface capable d’appeler automatiquement les fonctions bas niveau de communication appropriées, grâce à un seul paramètre Nom de la Ressource VISA.

Nom de la Ressource VISA

Exemple

Description du BUS

GPIB ::adresse ::INSTR

1.png

GPIB

Alias VISA

 2.png

Série, ALIAS configuré dans MAX.

TCPIP ::adresse ::INSTR

 3.png

LXI sur le LAN Ethernet

seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers.seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers.

4      Exemples Pilotage d’un instrument avec lecture d’un nombre fixe d’octets

Dans cet exemple, nous allons illustrer la lecture du nom d’indentification d’un appareil. L’appareil est à l’adresse GPIB 12 sur le bus et il répond « 73 octets » à la commande « *IDN ? » :

  1. Ouverture d’une communication avec l’appareil de mesure sur le port GPIB à l’adresse 12 (GPIB ::12 ::INSTR) ;
  2. Configuration du timeout de communication à 2 000 ms ;
  3. Écriture de la commande « *IDN ? » qui permet de demander le nom d’identification à l’appareil ;
  4. Attente de la réponse de l’appareil. Cette réponse est composée de 73 octets et sera disponible au format ASCII dans le « buffer de lecture ». Si l’appareil ne répond pas 73 octets en 2 secondes, nous aurons une erreur LabVIEW ;
  5. Fermeture de la session.

Exemple du pilotage d’un instrument GPIB via VISA.Exemple du pilotage d’un instrument GPIB via VISA.

5      Exemple Pilotage d’un instrument Série avec caractère de fin de communication

Dans cet exemple, nous allons illustrer la lecture du nom d’indentification d’un appareil sur le bus série. Le port série utilisé sera le port « COM2 », les réponses de l’instrument seront formatées avec un caractère de fin de communication :

  1. Permet l’ouverture d’une communication avec l’appareil de mesure sur le port COM2 ;
  2. La configuration des paramètres du port série est réalisée par la fonction VISA Configure Serial Port.vi de la sous-palette Série. Elle permet de définir le baud rate, le nombre de bits, la parité, le timeout mais également l’activation et la définition du type de caractère de fin de communication. Dans cet exemple, le caractère de fin est le code ASCII 0xA, soit le code « LF » pour « retour à la ligne » ;
  3. Écriture de la commande « *IDN ? » qui demande à l’instrument son nom d’identification ;
  4. Attente de la réponse de l’instrument. Nous avons configuré le driver pour attendre un caractère de fin de transmission. Nous allons donc paramétrer un nombre d’octets à attendre supérieur au nombre réellement attendu. En effet, si nous nous rappelons les 3 conditions d'arrêt possibles (nombre de caractères attendus reçus, time-out et caractère de fin présent), le code dans cet exemple stoppera uniquement sur le caractère de fin ou le time out. Dans le cas du time-out, si l’instrument ne retourne pas une réponse en 2 secondes, nous aurons une erreur LabVIEW. ;
  5. Fermeture de la session.

 

Figure 4.57– Exemple du pilotage d’un instrument série via VISA.Figure 4.57– Exemple du pilotage d’un instrument série via VISA.

L’encapsulation dans un VI LabVIEW des fonctions de pilotage d’instrument permet de réaliser un driver d’instrument. Dans ces exemples simples, nous avons mis en évidence la facilité avec laquelle la palette VISA permet de piloter un instrument. Cependant, et comme toujours, facilité ne veut pas dire qu’il n’y a aucune règle à suivre.

La gazette de NIDays : février 2014
15 déc. 2016

Un article que j'ai réalisé à la demande du service communication de National Instruments pour NIDays 2014.

 

La gazette de NIDays

Épisode 2

 

Les rencontres de la communauté
Vues par Luc DESRUELLE, Certifié LabVIEW Architect, chef de projet, co-gérant Mesulog

 

Développant depuis plus de quinze ans sous l’environnement LabVIEW, j’ai longtemps  envié la communauté des développeurs « US » avec l’ensemble de leurs  forums, blogs, sites internet et rencontres entre spécialistes.

 

Depuis un peu plus d'un an c’est avec un immense plaisir que je participe à la communauté officielle « francophone ». Composée de développeurs certifiés, d’architectes ou de débutants, ils partagent tous le plaisir de développer avec LabVIEW, et désormais la qualité des échanges « francophones » n’a plus grand chose à envier à celle des États-Unis. Il ne manquait qu’une seule chose, transformer les échanges virtuels en rencontres réelles.

 

L’année dernière, à NIDays, cela a été, pour la première fois, l’occasion de nous rencontrer et de mettre un visage sur certains pseudos, mais je dois avouer que nous en voulions encore plus ! Depuis cet événement, la communauté a encore grandi, et nous sommes tous impatients de nous revoir. D’autant plus que cette année nous avons le droit, durant NIDays 2014, à encore plus d’activités dédiées aux membres de la communauté comme le concours de rapidité de codage ou le quiz lors de la rencontre "LabVIEW et vous". Je sens que cette édition va rester dans les mémoires ! "

 

 
 
 

 

micro-nuggets pour IHM
15 déc. 2016

Alpha Masks

un très bon article : http://www.ni.com/newsletter/51918/en/

Windows 8 Style UI demo

 Windows 8 Style UI demo

 

Drop Shadows

 

http://www.ni.com/newsletter/52142/en/?espuid=CNATL000000501982&cid=Direct_Marketing---em76700&elq=33b1bcd4ad3d4f31a5d3c33d2733ae63&elqCampaignId=

 

 

This article is part II in a series on building better LabVIEW UIs. Here, build on what you learned about alpha masks in part I and walk through how to create a user interface (UI) element with a drop shadow effect using the Gnu Image Manipulation Program (GIMP). Then learn how to bring the UI element into NI LabVIEW software.

Previously, we discussed how you can use alpha masks to gray out an interface to bring attention to a pop-up dialog window. By adding a drop shadow to a UI element, you can achieve a similar effect without graying out the rest of the interface. In this article, focus on the use case of creating a vertical menu bar that moves in and out of the field of view, depending on where the operator’s mouse is on the interface. Learn how you can use a drop shadow effect to draw attention to the menu bar when it is in the field of view.

Also explore how to use GIMP, a free third-party application, to create a UI element that you can import into LabVIEW. You can download GIMP at www.gimp.org

. This tutorial uses GIMP; however, you can duplicate these ideas in the image manipulation editor of your choice.

 

 

Sliding Containers in LabVIEW

Infotainment system UI Developed with Labview

Techniques Programmation avancée LabVIEW : Gestion des données FGV – AE - vers DVR
15 déc. 2016

plus d'informations dans le chapitre 3 « programmation avancée » du  livre "LabVIEW programmation et applications" édition Dunod

 

http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=la_B00VOUMY4A_1_1?s=books&ie=UTF8&qid=1436443422&sr=1-1

 

(environnement de développement, règles de style, gestion des données, gestion des erreurs et règles d’architecture) :

• la gestion des données : locale, globale, nœud de propriété, variables fonctionnelles (FGV), Action Engine (AE), programmation Objet (OOP), DVR; • les modèles de projet (VI général, machine à états, producteur/consommateur événementiel, boite de dialogue)

• la gestion des erreurs;

• les règles de styles;

• les outils gratuits et indispensables (OpenG, VIPM,...)

• ...

 

0] techniques Programmation Avancée : locale, Globale vers FGV et DVR

http://www.mesulog.fr/download/JournTech2013_MESULOG_ProgAvanceeLabVIEW_GestionDonnees_VNI.pdf

Par Luc DESRUELLE certifié LabVIEW Architecte et développeur - MESULOG lors des

Journées techniques LabVIEW National Instruments 21 novembre 2013

Présentation réalisée lors des Journées techniques LabVIEW, par Mesulog - Luc Desruelle - Technique de programmation avancée : gestion des données.

 

  • Sommaire :
    Où trouver de l’aide?
  • Quelques règles de style, LabVIEW Style Checklist
  • Contrôle, Indicateur VS Locale VS Globale VS Noeud de propriété
  • Pourquoi utiliser indicateur puis locale puis noeud de propriété
  • FGV : Functional Global Variable
  • AE : Action Engine
  • OOP : Object-Oriented Programming et structure
  • SM – QDMH
  • DVR : Data Value Reference

 

 

1) Histoire des FGV - Functional Global Variables – History

 

FGV : Functional Global Variable

 

Prior to the release of LabVIEW 2, the value of the initialized shift register had not been defined. This was during the time period in which LabVIEW was black and white and required the developer to disconnect all of the terminals to move an icon.

 

With the release of LabVIEW 2, the LabVIEW development team wisely determined that the uninitialized shift register would retain its previous value. The alternative would have been that it revert back to the default value of the data type. Subsequently, with the release of LabVIEW 2, this technique became the methodology for storing global data in LabVIEW.

 

The native global variable was not introduced until LabVIEW 3. But even with the introduction of the native global variable, the functional global variable remained a popular programming technique for global data storage.

 

Advanced Architectures in LabVIEW Course Manual

 

 

2) FGV - Functional Global Variables

La FGV est un registre à décalage non initialisé, d’un vi non réentrant, qui permet de mémoriser une valeur sur un set...

1 init.PNG

et de la lire sur un Get

2 get.PNG

 

3) AE -  Action Engine

L'AE permet de rajouter une action dans un état, principe de l'encapsulation

3 AE.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

Exemple de code OOP avec LabVIEW
15 déc. 2016

Le code LabVIEW est dans le post 

Suite à une demande sur le forum, un exemple de OOP avec LabVIEW

La demande : Pouvoir configurer le même logiciel avec 2 cartes d'acquisition différentes.

L'initialisation, boite de dialogue de configuration, acquisition et close des références seront donc différents en fonction des cartes.

Donc:

  • Une class Deformation avec 2 enfants ConditionneurExterne et CarteSpecifique
  • 1 méthode configuration, avec dans chaque class enfant une méthode en dynamic dispatch pour la fenêtre de configuration spécifique, qui ser donc appelée lors de la définition de l’objet de la carte utilisée
  • Idem pour les méthodes acquisition, méthode acquisition en dynamic dispatch
  • Les données spécifiques à une carte sont donc dans la donnée privée de la class de l’enfant.

 

J’ai fait un « brouillon d’architecture ». Je précise car le code n’est pas totalement « propre ».

Le projet UML

Deformation.png

En LabVIEW cela va ressembler à

> Dans le projet  

project.PNG

et sur la hiérarchie des class

hierarchie de classes.PNG

 

Une class Deformation avec 2 enfants

> ConditionneurExterne

> CarteSpecifique

il y a un vi exemple

 

diagram OOP.PNG

 avec en face avant

OOP face Avant.PNG

 en fonction du boolean "Conditionneur Externe", l'objet sera du type d'une carte ou de l'autre. Le code de la class correspond sera alors exécuté.

liens sur le site de National Instruments : LabVIEW Object Oriented Programming Resource Directory

avatar_ld.gifLuc Desruelle Voir mon profil | Contact

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CTD : Certified TestStand Developer / Certifié TestStand LabVIEW

 

 
Partie 2/3 : Distribuer son Framework, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version Simple
15 déc. 2016

I] Insérer son Framework, modèle personnalisé de projet LabVIEW, dans le gestionnaire de projet de National Instruments : la version "simple"

  

I.1) Introduction et Documentation

Sur un nouveau projet, afin de ne pas repartir de la feuille blanche, les développeurs LabVIEW utilisent leur Framework de projet, qui correspond à leur structure de programme.

Il existe quelques publications sur comment créer et distribuer son modèle de projet LabVIEW. Souvent en anglais. Souvent la version "simple". Par version "simple" il faut comprendre la version "proposée" en standard par National Instruments au travers du gestionnaire de projet de LabVIEW.

Cette méthode peut être "personnalisée", mais il faut une bonne connaissance du fonctionnement de la version "classique" avant de pouvoir la personnalisée.


Pour moi 2 références : By ekerry "Creating and Distributing Custom Templates with the New Create Project Dialog"  http://ekerry.wordpress.com/2012/11/09/creating-and-distributing-custom-templates-with-the-new-create-project-dialog/

 et  LabVIEW Templates and Sample Projects: http://www.ni.com/white-paper/14045/en


 

Je vais vous présenter comment LabVIEW permet d'insérer votre Framework dans le gestionnaire de projet "standard" de LabVIEW

 

I.2) Arborescence

Par exemple le Framework de projet, basé sur le modèle QMH modifié, cf Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pourquoi ?,  pourra être copié dans un des 2 dossiers "projectTemplates" :

 

> Dans le dossier de LabVIEW : C:\Program Files\National Instruments\LabVIEW XXXX\ProjectTemplates

> Dans le dossier "LabVIEW Data" >>> C:\Users\NomUser\Documents\LabVIEW Data\ProjectTemplates

 

 Personnellement j'utilise le dossier "LabVIEW Data" (plusieurs versions de LabVIEW, droit d'écriture, sauvegarde, distribution par copier-coller)

 

Dans le dossier LabVIEW il existe déjà les exemples livrés par NI avec LabVIEW, ils vont servir de modèle

projet.PNG

 

Le dossier créé sous  "LabVIEW Data" devra contenir les dossiers

  • \ProjectTemplates\MetaData
  • \ProjectTemplates\Source

projet.PNG

 

I.3) Le fichier MetaData

Le dossier MetaData contient un fichier xml, il suffit de copier le fichier de "C:\Program Files\National Instruments\LabVIEW 2012\ProjectTemplates\MetaData"

 

La structure est

 

avec un Tag pour chaque Projet >>>

Par exemple pour mon projet :

 


  Luc Desruelle QDMH
  Luc QDMH
  Modèles:Bureau
  état;machine;file d'attente;en file d'attente;événement;gestionnaire;message
  Core/Luc_QMH
  Queued Message Handler.lvproj>
  images/avatar_ld.png
  documentation/Queued Message Handler Documentation.html
  None
  400
  localization/QMH_Label Localization.vi

 

XML Tag Description Example Project
Required Tags
</code></td> <td>Defines the title of the project as it appears in the <strong>Create Project</strong> dialog box.</td> <td>All projects</td> </tr> <tr> <td><code><Description></code></td> <td>Defines the description of the project as it appears in the <strong>Create Project</strong> dialog box.</td> <td>All projects</td> </tr> <tr> <td><code><Filters></code></td> <td>Determines filters for the project, which allow users to filter items in the <strong>Create Project</strong> dialog box by category. Use a colon to separate categories and a semicolon to separate multiple filters.</td> <td>All projects</td> </tr> <tr> <td><code><LocationPath></code></td> <td>Specifies the path to the directory that contains source files for the project. Use a forward slash (/) as the path separator. <p> </p> This path is relative to the <code>ProjectTemplates\Source</code> directory. All other paths in the meta data for the project are relative to the path you provide in the <code><LocationPath></code> tag.</td> <td>All projects</td> </tr> <tr> <td><code><ListboxImagePath></code></td> <td>Specifies the path to the image you want LabVIEW to display beside the project title in the <strong>Create Project</strong> dialog box. Ensure that the dimensions of the image are 32x32 pixels.</td> <td>All projects</td> </tr> <tr> <td><code><ProjectPath></code></td> <td>Specifies the path to the <code>.lvproj</code> file for the project. If you set the value of the <code><CustomVIMode></code> to AfterPage1, this tag is optional.</td> <td>Simple State Machine</td> </tr> </tbody> </table> <p> </p> <p>Cette première version est une version "simple", elle n'utilise donc que les Tags "simples".</p> <h2>I.4) Le code source</h2> <p>Je copie le code du QMH modifié sous <span>..\ProjectTemplates\<strong>source\Core\Luc_QMH</strong></span></p> <p>avec le nom du projet <span><ProjectPath><strong>Queued Message Handler.lvproj</strong></ProjectPath></span></p> <p>et la documentation html  <span><DocumentationPath><strong>documentation/Queued Message Handler Documentation.html</strong></DocumentationPath></span></p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/171580_projet2.PNG" border="0" alt="projet2.PNG"></p> <p> </p> <p>J'ajoute mon image sous <strong>images/avatar_ld.png </strong><strong>ma belle image! <img src="https://forums.ni.com/legacyfs/online/171598_avatar_ld.gif" border="0" alt="avatar_ld.gif"></strong></p> <p><span><strong>La version standard de la distribution du Framework personnalisé est terminée...</strong></span></p> <hr> <p><span><em>Si vous avez besoin d'aide, d'information ou de conseil pour réaliser la distribution votre projet personnalisé (Framework), </em></span></p> <p><span><em>vous pouvez laisser vos commentaires.</em></span></p> <hr> <h1><em>II] Générer un Framework personnaliséprojet </em></h1> <p> Nous pouvons donc créer notre projet, à partir de notre Framework</p> <p><img src="https://forums.ni.com/legacyfs/online/171581_Projet%203.PNG" border="0" alt="Projet 3.PNG"></p> <p> </p> <p>puis choisir le modèle de projet "le point de départ..."</p> <p><img src="https://forums.ni.com/legacyfs/online/171582_Projet%204.PNG" border="0" alt="Projet 4.PNG"></p> <p> </p> <p>Le modèle "simple" utilise la gestion "standard" de NI LabVIEW pour générer et modifier le code.</p> <p><img src="https://forums.ni.com/legacyfs/online/171583_Capture%205.PNG" border="0" alt="Capture 5.PNG" width="620"></p> <p> </p> <table border="1" cellspacing="1" cellpadding="1"> <tbody> <tr> <td><code><CustomVIMode></code></td> <td> <ul> <li>None—No custom VI runs. If you omit the <code><CustomVIMode></code> tag, None is the default value.</li> </ul> </td> <td> </td> </tr> </tbody> </table> <p> </p> <p><span>Et moi je n'aime pas la création standard....</span> je voudrai en faire plus!</p> <p>Par exmple le préfixe est une bonne idée, mais pas sur les vi's "support", je voudrai renommer des dossiers suivant des options</p> <p> </p> <p><span>Bref nous allons donc voir comment modifier les options de génération de la fenêtre de distribution de projet LabVIEW.</span></p> <hr> <p><span><a href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-1-3-Cr%C3%A9er-des-mod%C3%A8les-de-projet-personnalis%C3%A9s-avec-le/ba-p/3488897" target="_blank">Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pourquoi ?</a></span></p> <p><span><a href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-2-3-Distribuer-son-Framework-mod%C3%A8le-de-projet/ba-p/3484810" target="_blank">Partie 2/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - version Simple</a></span></p> <p><span><a href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-3-3-Distribuer-son-Framework-de-projet-mod%C3%A8le-de-projet/ba-p/3488878" target="_blank">Partie 3/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - version Fenêtre distribution totalement personnalisée</a> </span></p> <p> </p> <p><span><a href="https://forums.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><em>Luc Desruelle </em></span><em>| <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><span>Voir mon profil</span></span></a> | LabVIEW Champion | <a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></em></p> <p> </p> <p>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CTD : Certified TestStand Developer / Certifié TestStand LabVIEW</p> <p> </p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-2-3-Distribuer-son-Framework-mod%C3%A8le-de-projet/ba-p/3484810" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pourquoi ? </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <h1><em>I] Depuis le QMH ou GMF - pourquoi utiliser un modèle personnalisé?</em></h1> <p> </p> <p><span>Avec LabVIEW 2012 est arrivé les modèles de projet LabVIEW via le gestionnaire de projet. Il est livré quelques modèles, ou Framework, avec LabVIEW, dont les fameux QMH (Queue Driven Message Handler) <span><em>ou modèle Gestionnaire de messages dans une file d'attente (GMF) en Français </em></span>et l’Actor Framework.</span></p> <p> </p> <p><span>Même si l’Actor Framework est <strong>passionnant</strong>, il reste difficile à utiliser pour les <strong>non-spécialistes</strong>. Le Queue Driven Message Handler, plus connu sous le petit nom de QMH ou QDMH, est un incontournable qui est très simple d'utilisation.</span></p> <p> </p> <p><span>La structure proposée par QMH repose sur un modèle éprouvé d’une structure producteur – consommateur, dans lequel :</span></p> <p><span><span>Ø  (<em><strong>la boucle productrice</strong></em>) </span>la structure évènementielle capture les actions utilisateurs, sur la face-avant, et produit le « message » via une FIFO </span></p> <p><span><span>Ø  </span>Le message est un cluster composé d’un état « case » et une donnée facultative Data de type variant</span></p> <p><span><span>Ø  (<em><strong>la boucle consommatrice</strong></em>) </span>la structure consommatrice, basée sur un modèle de machine à états, dépile sur apparition les données de la FIFO. Le message définit une transition vers l’état avec la donnée associée. Le "case" de la structure "Message" est une chaîne qui correspond à un des sous-diagrammes de la structure Condition . Par conséquent, la lecture du message provoque l'exécution du sous-diagramme correspondant de la structure Condition. Ce sous-diagramme est appelé <em>diagramme de message</em> car il correspond à un message.</span></p> <p> </p> <p>Plus d'informations <a href="http://www.ni.com/white-paper/14119/fr/" target="_blank"><span>http://www.ni.com/white-paper/14119/fr/</span></a></p> <p><span>Ø  </span>Ces boucles s'exécutent en parallèle et sont connectées par la file d'attente de messages, qui facilite la communication entre les boucles.</p> <p><span><span>Ø  </span> </span>Votre application peut avoir plusieurs "Boucle Consommatrice", <em><strong>QMH = Actor</strong></em>, chaque boucle correspond à une tâche effectuée par l'application.</p> <p> </p> <p><span><span><strong>Alors pourquoi utiliser un modèle personnalisé </strong></span>? </span><span>C’est un modèle, <strong>qui mérite des améliorations</strong>, vos améliorations, mais la structure « Message & file d'attente FIFO » est à garder.</span></p> <p><span>Je vous conseille donc de <strong>générer <span>un  </span>VOTRE projet MAIS sur la base du QMH</strong>, de <span><strong>regarder la très bonne documentation html livrée avec le projet</strong></span>, et de modifier le code. </span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/171673_Projet%203.PNG" border="0" alt="Projet 3.PNG"></span></p> <p><span><em>Gestionnaire de messages dans une file d'attente :</em></span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/171674_Projet%204%20-%20Copie.PNG" border="0" alt="Projet 4 - Copie.PNG"></span></p> <p><span>Le nouveau code sera la base de construction de votre modèle personnalisé "simple"</span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/171677_code%20main.png" border="0" alt="code main.png" width="620"></span></p> <div> <h1><span><em><strong>II] Exemples d'améliorations "simples"</strong></em></span></h1> <p> </p> <p><span>L’exemple donné par le QMH :</span></p> <p><span><span>Ø  </span><strong>quitte l’application sur « erreur » </strong>-> remplacer "Exit" par "Error"" et ajouter un état dans la "Boucle de gestion de messages". Remarque : la "<em>Message Queue.lvlib</em>" est distribuée en "support VIs". Elle n'est pas dans la vi.lib ni la user.lib. Vous pouvez donc la modifier. Je vous propose de renommer la lvlib, pour faire la différence avec la lvlib d'origine.</span></p> <p> </p> <p><span><img src="https://forums.ni.com/legacyfs/online/171681_code%20exit.png" border="0" alt="code exit.png" width="620"></span></p> <p> </p> <p><span><span>Ø  </span>ne sauvegarde pas ni ne gère l'erreur, qui est donc fatale -> dans l'état "Error" ajouter un affichage de l'erreur ainsi que la sauvegarde et le filtrage si l'utilisateur le décide.</span></p> <p><span><span>Ø  </span>n’affiche pas la version du logiciel -> ajouter les VIs de gestion de version de LabVIEW</span></p> <p><span>Ø  la structure event driven sort sur erreur -> remplacer par un vi qui transfère l'erreur à la "Boucle de gestion de messages" via la FIFO</span></p> <p> </p> <p><span><img src="https://forums.ni.com/legacyfs/online/171682_code%20exit%20event.png" border="0" alt="code exit event.png"></span></p> <p> </p> <p><span> <span>Ø Supprimer le code "exemple"</span></span></p> <p><span>Ø  n'a pas votre personnalisation! Ajouter votre logo,...</span></p> <p><span><span>Ø  </span>…</span></p> <p> </p> <p><span><em>Si vous avez besoin d'aide, d'information ou de conseil pour réaliser votre projet personnalisé (Framework), vous pouvez laisser un commentaire. </em></span><span><em>La suite de l'histoire....</em></span></p> <p> <a href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-1-3-Cr%C3%A9er-des-mod%C3%A8les-de-projet-personnalis%C3%A9s-avec-le/ba-p/3488897" target="_blank">Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pourquoi </a><span>?</span></p> <p><span><a href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-2-3-Distribuer-son-Framework-mod%C3%A8le-de-projet/ba-p/3484810" target="_blank">Partie 2/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - version Simple</a></span></p> <p><span><a href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-3-3-Distribuer-son-Framework-de-projet-mod%C3%A8le-de-projet/ba-p/3488878" target="_blank">Partie 3/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - version</a></span></p> <p> </p> <p><span><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><em>Luc Desruelle </em></span><em>| </em> <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><span>Voir mon profil</span></span></a> | <a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CTD : Certified TestStand Developer / Certifié TestStand LabVIEW</p> </div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-1-3-Cr%C3%A9er-des-mod%C3%A8les-de-projet-personnalis%C3%A9s-avec-le/ba-p/3488897" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Un GIF animé pour éviter de faire du code </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <h1><span><em>Le code utilisé pour le post est en Pièce jointe</em></span></h1> <h1>0) Introduction</h1> <p> </p> <p><span>Depuis LabVIEW 6.1 il est possible d’importer dans la face-avant de l’IHM des GIF animés. Dans la face-avant, oui, mais surtout dans les contrôles et indicateurs.  </span></p> <p> </p> <p><span>L’intérêt d’utiliser une image animée : </span></p> <p> </p> <p><span>1)     Ajouter une animation, pour signaler le déroulement d’une action, et sans faire de code </span></p> <p><span>2)     Esthétique, comme toujours, pour un aspect plus professionnel (attention pas toujours vrai…)  </span></p> <p> </p> <p> </p> <h1><span>1) Signaler le déroulement d'une action<br></span></h1> <p><span> </span></p> <p><span>Mon préféré, il est très simple d’importer un GIF animé, et de l’insérer </span></p> <p><span>Soit dans un bouton état Vrai : une image </span><img src="https://forums.ni.com/legacyfs/online/172814_updating2.gif" border="0" alt="updating2.gif">et état Faux : une autre image  ou PAS d’image, afin de définir une action en cours, par exemple une mise à jour.</p> <p> </p> <p><span>Soit dans un picture Ring ou menu déroulant d’images, afin de définir un état  </span><img src="https://forums.ni.com/legacyfs/online/172712_2.png" border="0" alt="2.png"> qui sera disponible via la valeur « donnée » <img src="https://forums.ni.com/legacyfs/online/172713_3.png" border="0" alt="3.png"></p> <p> </p> <p><span>par exemple  </span></p> <p><span>Dans l’utilisation, une de mes réponses sur le forum « Faire clignoter une led dans un cluster » </span></p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/Labview-faire-clignoter-une-led-dans-un-tableau-de-cluster/td-p/1833181" target="_blank">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Labview-faire-clignoter-une-led-dans-un-tableau-de-cluster/td-p/1833181</a><span>  </span></p> <p> </p> <p> </p> <h1><span>2) Esthétique </span></h1> <p><span>J’avais réalisé pour illustrer les fenêtres LabVIEW qui ne sont pas rectangulaire, </span><em> Vous trouverez l'ensemble du sujet, des exemples, du code et un tutorial sur la réalisation de fenêtres pas rectangulaire sur le post d'origine</em> : <a title="Les fenêtre LabVIEW" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Les-fen%C3%AAtres-LabVIEW-ne-sont-pas-toutes-rectangulaires/ba-p/3473285" target="_blank">Les fenêtres LabVIEW ne sont pas toutes rectangulaires</a></p> <p> </p> <p><span>un exemple avec un petit poisson qui nageait. </span></p> <p><span> </span></p> <p><span>Afin de déplacer l’image, j’avais insérer un GIF animé de poisson dans un menu déroulant d’images, que je déplaçais de façon programmatique. </span></p> <p> </p> <p><span>L’intérêt du menu déroulant, plutôt que d’un booléen, résidait dans la possibilité de rajouter d’autres images.  </span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/172322_Capture11.PNG" border="0" alt="Capture11.PNG"><img src="https://forums.ni.com/legacyfs/online/172323_Capture12.PNG" border="0" alt="Capture12.PNG"></span></p> <p> </p> <p><em> </em></p> <h1><em><span>3) Importer un GIF animé dans LabVIEW </span></em></h1> <p>Réaliser un GIF animé, avec par exemple Barbarosa Gif animator ou Photoshop ou ... télécharger une image libre de droit sur internet.</p> <p>Vous pouvez télécharger mon avatar…</p> <p> </p> <p>Sous LabVIEW  dans le menu : "<em><span><strong>Importer une image dans le presse papier</strong>" afin de ne pas dégrader l'image</span></em></p> <p><em> </em></p> <p><img src="https://forums.ni.com/legacyfs/online/172714_5.png" border="0" alt="5.png"></p> <p> </p> <p>Sur le contrôle de type menu déroulant d'images<em> "ajouter un élément après"</em></p> <p><img src="https://forums.ni.com/legacyfs/online/172716_7.png" border="0" alt="7.png"></p> <p> </p> <p> <li-video size="custom" vid="https://youtu.be/IJOdqchDGAY" align="center" width="200" height="150" uploading="false" thumbnail="" external="url"></li-video></p> <p> </p> <p> </p> <p><em>Je reste dispo pour vos commentaires, </em><em>A+<br></em></p> <p><em> </em> </p> <p><em><span><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a>Luc Desruelle </span>|  <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><span>Voir mon profil</span></span></a> | </em><em><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></em></p> <p><em>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CTD : Certified TestStand Developer / Certifié TestStand LabVIEW</em></p> <p><em> </em></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Un-GIF-anim%C3%A9-pour-%C3%A9viter-de-faire-du-code/ba-p/3473623" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Darwin appliqué à LabVIEW : l’évolution de la gestion des données </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <p>Bonjour à tous, je livre ma présentation du LUGE 3.0 « Darwin appliqué à LabVIEW : l’évolution de la gestion des données »</p> <p> </p> <p><span>PS : vous pouvez télécharger la présentation française <a title="Darwin_LabVIEW_Evolution_Des_Donnees V1.7.pdf" href="https://forums.ni.com/ni/attachments/ni/4009/36/1/Darwin_LabVIEW_Evolution_Des_Donnees%20V1.7.pdf" target="_blank">Darwin_LabVIEW_Evolution_Des_Donnees V1.7.pdf</a> et LabVIEW examples code.</span></p> <p> </p> <p><span>PS : Il existe <span><strong>une version Anglaise plus compléte</strong></span>, que vous pouvez télécharger <a title="Darwin applied to LabVIEW V2.2.pdf " href="https://forums.ni.com/ni/attachments/ni/4009/40/1/Darwin%20applied%20to%20LabVIEW%20V2.2.pdf" target="_blank">Darwin applied to LabVIEW V2.2.pdf.</a> <a title="Darwin applied to LabVIEW: The evolution of the data management" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Darwin-applied-to-LabVIEW-The-evolution-of-the-data-management/ba-p/3486379" target="_blank">Darwin applied to LabVIEW: The evolution of the data management</a></span></p> <p><span> </span></p> <p><span><br></span>Elle traite de l’évolution du concept « <em>mémorisation »</em> du flux de données, avec <em>Contrôle vers indicateur -Locale -Globale -FGV -AE –SEQ -DVR -OOP –SM –QDMH.</em></p> <p> </p> <p> </p> <p>La présentation vous permet de répondre à la "simple question" Pourquoi il faut éviter une locale, globale, noeud de propriété... et surtout comment faire!!!</p> <p><img src="https://forums.ni.com/legacyfs/online/194249_2.png" border="0" alt="2.png" width="620"></p> <p><img src="https://forums.ni.com/legacyfs/online/194254_1.png" border="0" alt="1.png" width="620"><li-video size="custom" vid="https://youtu.be/oIVH8JDO0NY" align="center" width="200" height="150" uploading="false" thumbnail="https://i.ytimg.com/vi/oIVH8JDO0NY/hqdefault.jpg" external="url"></li-video></p> <p> </p> <p><em>Pour ceux qui liront la présentation, la technique SEQ n’est pas traité. La prochaine fois, ou pour les plus curieux.</em></p> <p> </p> <p> </p> <p><em>Luc Desruelle | </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif" width="64" height="36"></em></span></a><em>| <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"></span><span>Voir mon prof</span><span>i</span><span><span>l</span></span></a> | </em> <a href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank">Mon blog LabVIEW</a></p> <p><em>CLA : </em><span><em>Certified</em></span><em> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br></em></p> <p><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank">Co-auteur livre LabVIEW : Programmation et applications</a></p> <p><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank">LabVIEW Champion</a></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=asap_bc?ie=UTF8" target="_blank"><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/178097iEEEEDCB7BD5B0771/image-size/original?v=lz-1&px=-1" border="0" alt="banniere Luc Livre.png" title="banniere champion.png" align="left"></a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Darwin-appliqu%C3%A9-%C3%A0-LabVIEW-l-%C3%A9volution-de-la-gestion-des-donn%C3%A9es/ba-p/3486205" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Partie 3/3 : Distribuer son Framework de projet, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version distribution personnalisée </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <div> <h1>I] Introduction</h1> <p> </p> <p>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.</p> <p>Depuis la version LabVIEW 2012 un gestionnaire de projet permet d'ajouter ses modèles et de les distribuer facilement. voir</p> <p> </p> <p><a title="LabVIEW modéle personnalisé" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-2-3-Distribuer-son-Framework-mod%C3%A8le-de-projet/ba-p/3484810" target="_blank">Partie 2/3 : Distribuer son Framework, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version Simple</a></p> <p> </p> <p>Le modèle "simple" utilise la fenêtre de gestion "standard" de NI LabVIEW pour générer et modifier le code du projet.</p> <p> </p> <p><a href="https://forums.ni.com/servlet/JiveServlet/downloadImage/38-10780-171583/Capture+5.PNG" target="_blank"><img src="https://forums.ni.com/legacyfs/online/171583_Capture%205.PNG" border="0" alt="Capture 5.PNG" width="620" height="267"></a></p> </div> <p> </p> <p>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 :</p> <p> </p> <ul> <li>Renommer des dossiers suivant des options à ajouter</li> <li>Ajouter le nom de application; le client; le copyright;...</li> <li>Modifier la distribution du projet pour la génération de l'exe;</li> <li>Modifier les options du build</li> <li>Modifier le fichier ini</li> <li>...</li> </ul> <p> </p> <div> </div> <p> </p> <p>Nous allons donc voir comment <strong>modifier les options de génération de la fenêtre de distribution </strong>de projet LabVIEW.</p> <ul> <li> <div><span>En utilisant le dossier <strong>\scripting</strong></span></div> </li> <li> <div><span><strong>En </strong></span><span>modifiant via une <strong>class Enfant la "SpecPage"</strong></span></div> </li> </ul> <p> </p> <p><span>Et pour cela nous allons :</span></p> <p> </p> <ul> <li> <div><span>Créer une class <MetaDataClass> enfant de la class MetaDataObj\MetaDataObj.lvclass</span></div> </li> <li> <div><span>Créer une nouvelle "SpecPage.vi", qui va copier les nouvelles spécifications de la MetaDataClass personnalisée</span></div> </li> <li> <div><span>Créer un code qui va réaliser les actions de personnalisation</span></div> </li> </ul> <p> </p> <p>Avant de commencer, il faut bien comprendre le fonctionnement du gestionnaire de projet de LabVIEW.</p> <p> </p> <p> </p> <p> </p> <h1>II] Fonctionnement "standard" du gestionnaire de projet</h1> <p> </p> <p> </p> <p>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.</p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/178942_1_%20gestionnaire%20programme.png" border="0" alt="1_ gestionnaire programme.png" width="620"></p> <p>Il repose sur une structure « state machine » classique ; avec des états et des transitions via un file d’attente ; ou FIFO Queue.</p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/178943_1_%20gestionnaire%20programmecode.png" border="0" alt="1_ gestionnaire programmecode.png" width="620"></p> <p> </p> <p>initialisation des données Case <span><strong>"Init Spec Page"</strong></span> 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 »</p> <p><img src="https://forums.ni.com/legacyfs/online/178944_2_class%20metadataclass.png" border="0" alt="2_class metadataclass.png"></p> <p> </p> <p>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</p> <p> </p> <p>case<span><strong> "Open Spec Page" </strong></span>: lecture via property "Read Spec Page.vi" du chemin de la page de spécification</p> <p><img src="https://forums.ni.com/legacyfs/online/178945_3_specpage.png" border="0" alt="3_specpage.png" width="620"></p> <p>Après la page de spécification, la distribution du projet est réalisée par <strong>« <span>createuserpojet.vi</span>» </strong>qui exécute les actions de duplication du projet, selon les données de la class « MetaData.class ».</p> <p><img src="https://forums.ni.com/legacyfs/online/178948_5_createuserprojet.png" border="0" alt="5_createuserprojet.png" width="620"></p> <p> </p> <p>Pour résumer :</p> <p><img src="https://forums.ni.com/legacyfs/online/178956_Gestionnaire%20de%20projet%20standard%20de%20NI.png" border="0" alt="Gestionnaire de projet standard de NI.png"></p> <p> </p> <p> </p> <h1>III] Ajouter des options personnalisées au gestionnaire de projet</h1> <p> </p> <p>Nous allons utiliser trois tags optionnels du fichier XML du projet</p> <p> </p> <table border="1" cellspacing="1" cellpadding="1"> <tbody> <tr> <td> <p><span><strong>XML   Tag</strong></span></p>  </td> <td> <p><span><strong>Description</strong></span></p>  </td> <td> <p><span><strong>Example</strong></span><span><strong> Project</strong></span></p>  </td> </tr> <tr> <td colspan="3"> <p><span><strong>Optional</strong></span><span><strong> Tags</strong></span></p>  </td> </tr> <tr> <td> <p><code><span><<span>MetaDataClass</span>></span></code></p>  </td> <td> <p><span>Specifies</span><span> the <span>path</span> to a class <span>that</span> <span>defines</span> custom <span>behavior</span> for the <span>user</span> interface   of the second page of the <span><strong>Create</strong></span><strong>  Project</strong> <span>dialog</span> box.</span></p>  </td> <td> <p><span>Actor</span><span> Framework</span></p>  </td> </tr> <tr> <td> <p><code><span><<span>CustomVIMode</span>></span></code></p>  </td> <td> <p><span>Determines</span><span> <span>when</span> to <span>run</span>  a custom VI <span>during</span> the <span>project</span>  <span>creation</span> <span>process</span>. Select <span>from</span> the <span>following</span> values: </span></p>               <ul> <li><span>None—No custom VI <span>runs</span>. If <span>you</span> omit the </span><code><span><<span>CustomVIMode</span>></span></code><span> tag, None <span>is</span> the default value.</span></li> <li><span>AfterPage1—<span>After</span> the <span>user</span> selects a <span>project</span>, the <span><strong>Create</strong></span><strong>       Project</strong> <span>dialog</span> box closes, and the        custom VI <span>runs</span>.</span></li> <li><span>AfterPage2NoUI—<span>After</span> the second page of the <span><strong>Create</strong></span><strong>       Project</strong> <span>dialog</span> box <span>creates</span> the <span>project</span>, the        custom VI <span>runs</span> and <span>completes</span>.        <span>Then</span>, the <span><strong>Create</strong></span><strong>       Project</strong> <span>dialog</span> box closes.</span></li> <li><span>AfterPage2WithUI—<span>After</span> the <span><strong>Create</strong></span><strong>       Project</strong> <span>dialog</span> box <span>creates</span> the <span>project</span>, the <span><strong>Create</strong></span><strong> Project</strong> <span>dialog</span> box closes, and the custom VI <span>runs</span>. The custom VI <span>is</span> <span>responsible</span> for <span>showing</span> or        <span>hiding</span> <span>its</span> panel.</span></li>  </ul>  </td> <td> <p><span>Simple   State Machine, <span>Blank</span> VI, <span>Actor</span>  Framework</span></p>  </td> </tr> <tr> <td> <p><code><span><<span>CustomVIPath</span>></span></code></p>  </td> <td> <p><span>Specifies</span><span> the <span>path</span> to the custom VI <span>you</span> <span>want</span> to <span>run</span>  <span>during</span> the <span>project</span> <span>creation</span> <span>process</span>. If <span>you</span> set the </span><code><span><<span>CustomVIMode</span>></span></code><span> tag to None, LabVIEW ignores the </span><code><span><<span>CustomVIPath</span>></span></code><span> tag.<br>  <br>  </span></p>  </td> <td> <p><span>Actor</span><span> Framework</span></p> </td> </tr> </tbody> </table> <p> </p> <p>Avec les valeurs :</p> <ul> <li><<span>MetaDataClass</span>> : chemin relatif de la class fille. Je vous propose de partir de l'exemple de l'Actor Framework, afin de créer la votre</li> <li><<span>CustomVIMode</span>> : <span>AfterPage2WithNoUI</span> qui va donc permettre de réaliser des actions personnalisées via le vi <<span>CustomVIPath</span>></li> </ul> <p> </p> <p>Nous pouvons avoir</p> <p> </p> <p><<span>CustomVIMode</span>><span>AfterPage2NoUI1</span></<span>CustomVIMode</span>></p> <p><span> <br></span><CustomVIPath><span><span>scripting</span>/MetaDataObj/PostCopyScripting.vi</span></CustomVIPath><span>  </span></p> <p><span> <br></span><MetaDataClass><span><span>scripting</span>/MetaDataObj/MaMetaDataObj.lvclass</span></MetaDataClass></p> <p> </p> <p>Pour information, à partir de la version LabVIEW 2013 il existe des exemples de template, vit, pour</p> <ul> <li>la page de spécification : SpecPage.vi</li> <li>le code de "post copy scripting", code personnalisé après la code générique de copie : PostCopyScripting.vit</li> </ul> <p> </p> <h1>VI] Exemple distribution projet personnalisée</h1> <p> </p> <p>Lors de l'initialisation des données Case <span><strong>"Init Spec Page"</strong></span> du générateur de projet  : suite lecture du fichier XML du projet, le gestionnaire de projet va charger la class <span>MaMEtaDataObj.lvclass</span></p> <p> </p> <p>Dans le case<span><strong> "Open Spec Page" </strong></span>: lecture via property "Read Spec Page.vi" du chemin de la page de spécification.</p> <p>Ouverture de la page de spécification personnalisée.</p> <p> </p> <p>Après la validation de la page de spécification, la distribution du projet est réalisée par <strong>« <span>createuserpojet.vi</span>» </strong>qui exécute les actions de duplication du projet, selon les données de la class « MetaData.class ».</p> <p> </p> <p>Dans le case "<span><strong>Open Custom Vi</strong></span>" : l'option <<span>AfterPage2NoUI> </span>du fichier XML va permettre de réaliser le code de <<span>CustomVIPath></span> <span><strong>PostCopyScritping.vi</strong></span></p> <p> </p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/178953_7_MetaDataClass%20Map.png" border="0" alt="7_MetaDataClass Map.png" width="620"></p> <p> </p> <h1>V] Synthèse des différentes méthodes</h1> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/178955_8_CustomProject%20Map.png" border="0" alt="8_CustomProject Map.png" width="620"></p> <p> <li-video size="custom" external="url" thumbnail="" uploading="false" height="150" width="200" align="center" vid="https://youtu.be/RR_F1qB3guk"></li-video></p> <p> </p> <p> </p> <p><em><span>Luc Desruelle </span>| </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><em> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"><span>Voir mon profil</span></span></a></p> <p>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</p> <p><em><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a> , </em><a href="http://about.me/luc_desruelle" target="_blank"><span> About me. </span></a>, <a href="https://plus.google.com/u/0/110429526942091473482/posts" target="_blank"><span> Google+. </span></a> ,<a href="https://twitter.com/DesruelleLuc" target="_blank"><span> Twitter. </span></a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Partie-3-3-Distribuer-son-Framework-de-projet-mod%C3%A8le-de-projet/ba-p/3488878" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Video Programmation LabVIEW : Personnaliser un bouton, importer une image GIF </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <p><li-video size="custom" vid="https://youtu.be/IJOdqchDGAY" align="center" width="200" height="150" uploading="false" thumbnail="" external="url"></li-video></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Video-Programmation-LabVIEW-Personnaliser-un-bouton-importer-une/ba-p/3477717" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Instrument virtuel (VI) sous LabVIEW? C'est quoi? instrument physique contrôlé depuis l'ordinateur! </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <h2><strong><span>Un Instrument virtuel (ou VI) sous LabVIEW, C'est quoi? Historiquement, un logiciel de mesure est un instrument de mesure qui est contrôlé depuis un ordinateur à la place des boutons sur sa face-avant.</span></strong></h2> <p><span> </span></p> <p><span>Cette logique conduit à la notion d<strong>'instrument virtuel </strong>: instrument contrôlé depuis un ordinateur.</span></p> <p><span> </span></p> <p><strong><span>Un instrument virtuel est donc un programme qui présente une interface sous forme graphique (IHM) pour l'apparenter à un instrument physique. Les utilisateurs manipulent alors des instruments depuis l'ordinateur (virtuels) comme s'il s'agissait d'instruments physiques sur « étagère » (réels).</span></strong></p> <p> </p> <p> </p> <table border="0" width="90%" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="582" valign="top"> <p><span>Comme historiquement l'environnement de développement LabVIEW (IDE) est orienté « instrumentation », les inventeurs de LabVIEW ont donné l'extension .vi (Virtual Instrument : VI) au programme développé avec cet environnement pour faire le lien avec le pilotage d'instrument depuis l'ordinateur.</span></p> <p>C'est ainsi l'extension du fichier sur le disque « MonCode.vi », comme un document Word est de type « MonDocument.docx ».</p> </td> </tr> </tbody> </table> <p> </p> <p> </p> <p><span>Un programme ou VI, développé dans l'environnement LabVIEW, se compose principalement de deux éléments étroitement associés et </span><span>regroupés sous le même nom « nom_application.vi » (l'extension .vi permet une reconnaissance immédiate par l'environnement LabVIEW).</span></p> <p> </p> <p><span>Ainsi nous avons :</span></p> <ul> <li><span>La «<span> <span><strong>face-avant </strong></span></span>» (<em>Front panel</em>) qui est l'interface utilisateur du programme au sens génie logiciel : définition des entrées/sorties de données accessibles par l'utilisateur du programme (figure suivante). Cette notion sera reprise en détail dans le chapitre 3 du livre "LabVIEW programmation et applications.</span></li> </ul> <p> </p> <p><span><img src="https://forums.ni.com/legacyfs/online/200543_faceavant%20labview.png" border="0" alt="faceavant labview.png" width="620"><br></span></p> <ul> <li><span>Le « <span><strong>Diagramme</strong></span> » (diagram) qui est le programme de l'application ou code source. Il écrit sous la forme d'un diagramme flux de données en langage G : ensemble des icônes et des liaisons entre ces icônes utilisées. Cette partie de l'application est ce que l'on appelle le code source par opposition à l'interface utilisateur.</span></li> </ul> <p><span><img src="https://forums.ni.com/legacyfs/online/200538_diagramme.png" border="0" alt="diagramme.png"></span></p> <p> </p> <p><span><a title="LabVIEW ? Vous avez dit LabVIEW ? Le flux de données? " href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/LabVIEW-Vous-avez-dit-LabVIEW-Le-flux-de-donn%C3%A9es/ba-p/3485940" target="_blank">LabVIEW ? Vous avez dit LabVIEW ? Le flux de données? </a></span></p> <p><span><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/192999iE433281536C7510A/image-size/original?v=v2&px=-1" border="0" alt="LabVIEW diagramme.gif" title="LabVIEW diagramme.gif"></span></p> <p> </p> <p><em>Luc Desruelle | </em><em>| <a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif" width="64" height="36"></em></span></a><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"></span><span>Voir mon prof</span><span>i</span><span>l</span></a> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank">http://fr.linkedin.com/in/labviewcertifiedeveloppeur</a><a href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank">Mon blog LabVIEW</a></p> <p><em>CLA : </em><span><em>Certified</em></span><em> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br></em></p> <p><em>CTD : certifié TestStand Développeur</em></p> <p><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank">Co-auteur livre LabVIEW : Programmation et applications</a></p> <p><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank">LabVIEW Champion</a></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p><span> </span></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Instrument-virtuel-VI-sous-LabVIEW-C-est-quoi-instrument/ba-p/3488466" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Author of the French book “LabVIEW programming and applications" </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <div> <p><span>Prefaced by Jeff Kodosky the latest version is dated of May 2015. </span></p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/188800_Couverture%20livre.jpg" border="0" alt="Couverture livre.jpg" hspace="12" width="193" height="271" align="left"></p> <p><span>I translated the book summary:</span></p> <p><span>LabVIEW is a graphical development environment particularly suited to the field of acquisition, measurement and control / command. Its fully graphical approach provides </span><span>flexibility and unmatched intuitive dimension. Compared to text-based languages it offers the same programming capability but without the complex and abstract side related to syntax.</span></p> <p><span>This book allows readers to learn the LabVIEW programming language in order to build an application in the rules of art. It is structured in six chapters:</span></p> <p><span>• The first two are devoted to discover the tool and to the description of basic graphical programming elements.</span></p> <p><span>• The third chapter covers advanced LabVIEW <span>knowledge and skills to design, develop and deploy a <em>scalable</em>, readable, and maintainable application (style guideline, error handling, design pattern, timing FGV, Queue message).</span></span></p> <p><span>• The last three chapters deal with the specific capabilities of LabVIEW for the acquisition, analysis and presentation of data.</span></p> <p><span>Concrete and detailed examples illustrate LabVIEW capabilities such as data acquisition (NI-DAQmx, MAX), Plug & play instruments Driver, Real-Time systems & FPGA, signal processing, mathematical analysis, data backup, generation report, sharing code, VIPM or building execut</span>able. <span>All examples are downloadable and completely conform to the LabVIEW Style Checklist (error handling, 4x4 connectors, alignment wires, commented, readable...). </span></p> <p> </p> <p>Luc Desruelle, Francis Cottet, Michel Pinard</p> <p>Éditeur Dunod / L'Usine Nouvelle - 3ème édition - 464 pages - EAN13 : 9782100724338</p> <p> </p> <p>Lien sur le site Amazon : <span><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339" target="_blank">http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339</a></span></p> <p> </p> <p>The author : <a title="Luc DESRUELLE LabVIEW Champion page" href="https://forums.ni.com/t5/LabVIEW-Champions/LabVIEW-Champion-Luc-Desruelle/ta-p/3536804" target="_blank">Luc DESRUELLE LabVIEW Champion page</a></p> <p> </p> <p>Un lien vers un post du forum francophone qui parle de l’examen Certifié LabVIEW développeur (CLD) :</p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/CLD-pr%C3%A9paration/m-p/3082265/highlight/true#M17130" target="_blank">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/CLD-pr%C3%A9paration/m-p/3082265/highlight/true#M17130</a></p> <p> </p> <p><a href="https://twitter.com/DesruelleLuc" target="_blank">https://twitter.com/DesruelleLuc</a></p> <p><em>Luc Desruelle | </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif" width="64" height="36"></em></span></a><em>| <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"></span><span>Voir mon prof</span><span>i</span><span><span>l</span></span></a> | </em> <a href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank">Mon blog LabVIEW</a></p> <p><em>CLA : </em><span><em>Certified</em></span><em> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br></em></p> <p><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank">Co-auteur livre LabVIEW : Programmation et applications</a></p> <p><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank">LabVIEW Champion</a></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=asap_bc?ie=UTF8" target="_blank"><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/178097iEEEEDCB7BD5B0771/image-size/original?v=lz-1&px=-1" border="0" alt="banniere Luc Livre.png" title="banniere champion.png" align="left"></a></p> </div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Author-of-the-French-book-LabVIEW-programming-and-applications/ba-p/3486253" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Darwin applied to LabVIEW: The evolution of the data management </div> <div class="widgetElement__contentSubtitle"> <span >15 déc. 2016</span> </div> <div class="widgetElement__text"> <p><span>The survival of the fittest applied to the LabVIEW Dataflow model...</span></p> <p><span><span>PS : You can download the presentation  <a title="Darwin applied to LabVIEW V2.2" href="https://forums.ni.com/ni/attachments/ni/4009/40/1/Darwin%20applied%20to%20LabVIEW%20V2.2.pdf" target="_blank">Darwin applied to LabVIEW V2.2.pdf</a> attachment and LabVIEW examples code.</span><br></span></p> <p> </p> <p><span>Recently, I made a new pre</span><span>sentation (<a title="LabVIEW User Group LUGE" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Darwin-appliqu%C3%A9-%C3%A0-LabVIEW-l-%C3%A9volution-de-la-gestion-des-donn%C3%A9es/ba-p/3486205" target="_blank">LabVIEW User group LUGE)</a> "Darwin applied to LabVIEW: the evolution of the data management." subtitle “<span><strong>The survival of the fittest applied to the LabVIEW Dataflow model </strong></span><span>”. </span></span></p> <p> </p> <p><span><span><strong>With deep humor this presentation makes the link between the evolution of the LabVIEW data and the Darwin's Theory of Evolution</strong></span>.</span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/194993_darwin%20labview.png" border="0" alt="darwin labview.png" width="620"><br></span></p> <p><span>The presentation deals with the evolution of the concept of "Data communication" of the LabVIEW dataflow model</span><span>:</span></p> <p><span><span>l</span><span>Dataflow element to Variable Interfaces, to Buffer Interfaces</span></span></p> <p><span><span>l</span><span>To </span><span>store a value in memory/ </span></span><span><span>To </span><span>access </span><span>the value </span></span></p> <p><span><span>l<span>To prevent Race Condition, buffer copies</span></span><br></span></p> <p><span><span><span>T</span><span>he </span><span>presentation </span></span><span>does answer the following questions</span><span>:</span></span></p> <p><span><span>l</span><span>Why </span><span>avoiding local, global, Property Node? How to avoid Race Conditions? Does FGV prevents Race Condition (realy!) ?</span></span></p> <p><span><span>l</span><span>Which </span><span>method to </span><span>use</span><span>? Why?</span></span></p> <p><span>l</span><span>Who is the survival of the fittest? (<em>the survival of the most scalable)</em></span></p> <p><span> </span></p> <p> </p> <ul> <li><span><span>LabVIEW follows a <span>dataflow </span></span><span>model</span></span></li> <li><span><span>In </span><span>dataflow programming, you </span><span>generally do </span><span>not use variables. </span></span><span>For a </span><span>literal</span> <span>implementation of this </span><span>model</span><span>.</span></li> <li><span><span>Dataflow </span><span>models describe nodes </span><span>as: </span></span> <ul> <ul> <li><span><span>consuming </span><span>data inputs,</span></span></li> <li><span><span>producing </span><span>data outputs</span><span>.</span></span></li> </ul> </ul> </li> <li><span><span>Advanced concepts : LabVIEW </span><span>contains many </span><span>data communication </span><span>methods</span><span>. </span></span></li> <li><span><span>For example, local </span><span>and global variables </span><span>are not </span><span>inherently part of the LabVIEW dataflow execution model</span><span>. </span></span></li> </ul> <p> </p> <ul> <li><span><span>LabVIEW </span><span>contains many </span><span>“</span><span>data communication</span><span>” </span><span>methods, each suited for a certain use case. </span></span></li> <li><span>Can by order into 3 types:</span></li> </ul> <p><span><span>l</span><span>Dataflow elements, the primary methods</span></span></p> <p><span><span>l</span><span>Variable Interfaces</span></span></p> <p><span><span>l</span><span>Buffer Interfaces</span></span></p> <p><img src="https://forums.ni.com/legacyfs/online/194991_data%20communications%20methods.png" border="0" alt="data communications methods.png" width="620"></p> <p><img src="https://forums.ni.com/legacyfs/online/195454_data%20Communication.png" border="0" alt="data Communication.png" width="597" height="319"></p> <p><span><strong><em>For diner tonight:</em></strong> Functional Global variable (FGV, LV2), Action Engine (AE), DVR, OOP, State Machine and QMH. Speed demonstration, UI thread, memory management (buffer copies) and Race Condition <span><strong>with simple and downloadable examples</strong></span>.</span></p> <p><span> </span></p> <p> </p> <p>source: <a href="http://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/data_comm/" target="_blank">http://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/data_comm/</a></p> <p><a href="http://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/data_comm/" target="_blank">http://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/data_comm/</a></p> <p> </p> <p> <li-video size="custom" vid="https://youtu.be/7GmF8FPsjI0" align="center" width="200" height="150" uploading="false" thumbnail="" external="url"></li-video></p> <p> </p> <p> </p> <p>for example, (CLAD exam): Which of the following is the best method to update an indicator on the front panel? <span><strong>And explain WHY please!!!</strong></span></p> <ol> <li><span>Use a Local variable</span></li> <li><span>Wire directly to the indicator « Data Out »</span></li> <li><span>Use an implicit « value » property node</span></li> <li><span>Use an explicit « value » property node (reference)</span></li> </ol> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/195010_speed%20execution.png" border="0" alt="speed execution.png" width="620"></p> <p><span><em>A+</em></span></p> <p> </p> <p><span><em> </em></span></p> <p> </p> <p> </p> <p><em>Luc Desruelle | </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif" width="64" height="36"></em></span></a><em>| <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"></span><span>Voir mon prof</span><span>i</span><span><span>l</span></span></a> | </em> <a href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank">Mon blog LabVIEW</a></p> <p><em>CLA : </em><span><em>Certified</em></span><em> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br></em></p> <p><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank">Co-auteur livre LabVIEW : Programmation et applications</a></p> <p><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank">LabVIEW Champion</a></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=asap_bc?ie=UTF8" target="_blank"><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/178097iEEEEDCB7BD5B0771/image-size/original?v=lz-1&px=-1" border="0" alt="banniere Luc Livre.png" title="banniere champion.png" align="left"></a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Darwin-applied-to-LabVIEW-The-evolution-of-the-data-management/ba-p/3486379" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Help!!! où trouver de l'aide sous LabVIEW, de l'assistance LabVIEW par des pros </div> <div class="widgetElement__contentSubtitle"> <span >09 déc. 2016</span> </div> <div class="widgetElement__text"> <p>De l'aide sous LabVIEW? <span>Lorsqu'un développeur débute, il est normal qu'il se pose de nombreuses questions et qu'il ait besoin d'aide. S'il est seul, comme c'est souvent le cas, il peut rapidement se trouver dans une impasse et perdre beaucoup de temps. Il est très important de connaître les bonnes méthodologies à appliquer pour trouver les bonnes réponses.</span></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Help-o%C3%B9-trouver-de-l-aide-sous-LabVIEW-de-l-assistance-LabVIEW/ba-p/3488457" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> En écriture : Construire et piloter un système de mesure avec LabVIEW (DAQ et Instrument) </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <h1>E<em>xtrait du livre "<a title="LabVIEW : Programmation et Applications" chapitre 4 Applications : Construire et piloter un système de mesure" href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339" target="_blank" rel="nofollow">LabVIEW : Programmation et Applications" chapitre 4 Applications : Construire et piloter un système ...</a>"</em></h1> <p><em>on branche deux fils et ça fonctionne ?....Construire un système de mesure ou de génération de signal est l’origine de la création de LabVIEW pour acquérir, analyser et présenter les données.</em></p> <p><em>Il est ainsi le langage de développement le plus efficace pour réaliser un tel système.</em></p> <p><em>Nous allons :</em></p> <ul> <li><em>R</em><em>appeler les éléments important à prendre en compte lors de la définition du système d’instrumentation sur ordinateur ;</em></li> <li><em>Expliquer comment réaliser le logiciel avec LabVIEW, aussi bien avec des cartes d’acquisition (DAQmx) qu’avec des instruments de mesure sur table (VISA et IVI) ;</em></li> <li><em>I</em><em>ntroduire l’acquisition de données sur les systèmes Temps Réel (RT) et FPGA.</em></li> </ul> <p> </p> <p><strong><u>I] Caractéristiques d’un système de mesure</u></strong></p> <p><span> </span></p> <p>La réalisation technique se compose en général des éléments suivants :</p> <ol> <li>Les capteurs ;</li> <li>Le conditionnement des signaux ;</li> <li>Le câblage ;</li> <li>Le matériel de numérisation / génération de données ;</li> <li>Le driver et logiciel d’application ;</li> <li>L’ordinateur.</li> </ol> <p><img src="https://forums.ni.com/legacyfs/online/195219_figure%204.2.png" border="0" alt="figure 4.2.png" width="239" height="147"><img src="https://forums.ni.com/legacyfs/online/195220_figure%204.3.png" border="0" alt="figure 4.3.png" width="299" height="138"></p> <p> </p> <h1><u>II] Quelques rappels</u></h1> <ul> <li>La tension est la différence de potentiel électrique entre deux points, souvent noté « + » et « – » ;</li> <li>Le point de référence est le niveau de tension auquel la mesure est référencée. La M<strong>asse </strong>est la référence des potentiels électriques. Elle n'est pas forcément reliée à la terre.</li> <li><span>Le <strong>Common </strong>ou <strong>COM </strong>est un point de référence du circuit électrique.</span></li> <li><span>Le </span><span><strong>GND </strong></span><span>est le terme anglais Ground pour Masse.</span></li> <li>La <strong>Terre </strong>est reliée à la terre "physique", et a un potentiel de 0 V. C'est un point de référence du circuit éléctrique avec un potentiel particulier de 0V;</li> <li>La définition légale française est : <em>« <strong>Terre </strong>: masse conductrice de la terre, dont le potentiel électrique en chaque point est considéré comme égal à zéro. »</em></li> <li>Lorsque la <strong>Masse </strong>est reliée à la <strong>Terre</strong>, alors la référence des potentiels électriques du circuit est à 0V;</li> </ul> <p> </p> <p><u><strong>III] A prendre en compte pour faire une mesure</strong></u></p> <p><span>Lors de la connexion de plusieurs sources de tension sur le même système de mesure, il convient <strong>d’avoir une référence de masse</strong>, physiquement <strong>unique </strong>et <strong>commune </strong>afin de ne créer aucune « <strong>boucle de masse</strong> ». </span></p> <p> </p> <p><span>En effet, deux points de masse distants et connectés entre eux donneront naissance à un courant résiduel entre ces deux points. Ce courant résiduel générera du bruit et altérera la mesure.</span></p> <p> </p> <p>Pour comprendre "comment effectuer une mesure ?" Il faut connaître :</p> <ol> <li>L’origine électrique des sources de signaux à mesurer : <strong>référencé à la masse ou flottant</strong></li> <li>En déduire la connexion sur l'entrée du systéme de mesure: <strong>Différentiel, RSE ou NRSE</strong></li> <li>Il faut toujours un référencement à la masse, direct ou via une resistance de polarisation</li> </ol> <p> </p> <p> </p> <p>Pour faire une mesure il convient de connaître la nature du signal à mesurer, au sens de l’origine électrique des sources de signaux. Il en existe deux types:</p> <ul> <li>Référencé ou relié à la masse</li> <li>Non Référencé ou flottant</li> </ul> <p> </p> <p>Dans le cas des cartes d’acquisition de National Instruments, elles sont configurables en :</p> <ul> <li><strong>Différentiel</strong>, aucune des entrées de l'amplificateur d'instrumentation n'est référencée à la masse d'un système. Les mesures effectuées en mode différentiel nécessitent davantage de voies, puisque chaque mesure demande deux voies d'entrées analogiques.</li> <li><strong>RSE </strong>ou asymétrique référencé à la masse : les mesures ne nécessitent qu'une seule voie d'entrée car le second fil est commun, utilisé par toutes les voies et relié à la masse du système de mesure.</li> <li><strong>NRSE </strong>ou asymétrique non référencé: comme le mode référencé, mais le point commun n’est pas relié à la masse du système de mesure.</li> </ul> <p><img src="https://forums.ni.com/legacyfs/online/195221_medium.png" border="0" alt="medium.png"></p> <p> </p> <p>Cet article est en écriture</p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/En-%C3%A9criture-Construire-et-piloter-un-syst%C3%A8me-de-mesure-avec/ba-p/3486412" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Afficher un code dans plusieurs langues ou LabVIEW multilingue plurilingue unicode </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p>Je développe des logiciels sous LabVIEW dans plusieurs langues : Russe, Chinois, portugais, français, .... pour afficher les texte, menu, gestion erreur,... .Cette question revient souvent sur le forum. Ce post est une compilation de mes réponses du forum sur le sujet.Cela permet de "centraliser" les réponses sur ce sujet.A la fin du post je donne les liens vers les réponses du forum cela permet de laisser la place à la vision d'autres développeurs sur le sujet.</p> <p> </p> <p>I] Histoire ASCII, code Page, unicode et non unicode</p> <h2>I.1) Histoire</h2> <p>A l'origine du système actuel de codage des ordinateurs se trouve le standard ASCII (American Standard Code for Information Interchange). Il représente le codage numérique de 128 signes. Il est assez évident que ce nombre réduit de signes, s'il suffit pour le codage des caractères usuels de l'anglo-américain, ne permet pas le codage des graphèmes spécifiques d'autres langues européennes, ni même d'une.</p> <p> </p> <p>A partir du moment où les logiciels de traitement de texte se sont développés et diffusés dans le monde, il a fallu l'étendre à 256 numéros de code : <strong>ASCII étendu </strong>puis<strong> ANSI.</strong></p> <p> </p> <p>Par la suite les OS ont gérés plusieurs langues différentes : Attribution d'un code unique à tous les caractères utilisés dans les différentes langues du monde et donc la définition d'un jeu unique, universel, de caractères : c'est le standard Unicode. Dans cette idée un caractère est codé sur un U8, U16, U32</p> <p> </p> <p>Il ne faut pas confondre le multi-byte et unicode. En unicode le caractère est unique dans n’importe quel OS, en multi-byte le caractère a une valeur mais est affiché en fonction des paramètres de l’OS.</p> <p> </p> <p>Par exemple il existe un Chinois simplifié, écrit de la gauche vers la droite.</p> <p> </p> <h2>I.2) LabVIEW ne supporte pas l'unicode</h2> <p>LabVIEW supporte les caractères « multi-byte » et pas Unicode en natif (en option via fichier ini avec LV2011). Il <span><strong>interprète et affiche</strong></span>donc les caractères Unicode selon l’OS et surtout l’option « <span><strong>Options régionales et linguistiques -> langues pour les programmes non Unicode</strong></span> ».</p> <p> </p> <p>Si vous tapez du chinois sur votre clavier (ou copier-coller depuis la traduction de google…) vous pouvez mettre du chinois, et même faire un soft mulitlingues.</p> <p> </p> <p>L'avantage avec l'unicode serait de pouvoir affiché Russe et Chinois sur le même logiciel, comme Internet Explorer.</p> <p>Mais LabVIEW ne supporte pas l'unicode en standard.</p> <p> </p> <h2>I.3) si vraiment vous voulez utiliser l'unicode</h2> <p>voila des trucs pour y arriver : <a href="https://forums.ni.com/docs/DOC-10153" target="_blank" rel="nofollow">https://decibel.ni.com/content/docs/DOC-10153</a></p> <p>Soutenir l'unicode dans LabVIEW sur le forum idea exchange : <a href="https://forums.ni.com/t5/LabVIEW-Idea-Exchange/Support-Unicode/idi-p/921449" target="_blank">http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Support-Unicode/idi-p/921449</a></p> <p> </p> <p>Il est possible d'ajouter le support de l'Unicode dans LabVIEW. Pour cela tu peux editer le LabVIEW.ini et ajouter "UseUnicode=TRUE" (sans les guillemets <span title=":visage_qui_fait_un_clin_d'œil:">😉</span></p> <p>Voici <a href="https://forums.ni.com/docs/DOC-10153" target="_self" rel="nofollow">un lien</a> qui explique un peu plus en detail l'utilisation de l'Unicode dans LabVIEW.</p> <p> </p> <h2>I.4) Je déconseille d'utiliser l'unciode avec LabVIEW car non supporté</h2> <p>Mais comme LabVIEW ne supporte pas l'unicode en standard, je déconseille de l'utiliser.</p> <p>par exemple : <span>un Message To User (?) une boite de dialogue? si c'est cela, la boite de dialogue standard n'est pas unicode donc faire comme indiquer dans mon retour, cf une boite de dialogue Russe, sinon tu fais une boite de dialogue "maison", avec une string en unicode.</span></p> <p> </p> <p><span><em><strong> </strong></em></span></p> <h1><span>II] Exemple chinois</span></h1> <p> </p> <p><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/134966i78D46DC4F574FDE4/image-size/original?v=mpbl-1&px=-1" border="0" alt="original.png" title="original.png">  <img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/134970iB5CF47B95D9FA34F/image-size/original?v=mpbl-1&px=-1" border="0" alt="original2.png" title="original2.png"></p> <p> </p> <p><span><strong>Configuration Windows XP pour prise en charge caractères non Unicode</strong></span></p> <p><span><strong>Démarrer -> Paramètres -> Panneau de configuration -> Options régionales et linguistiques -></strong></span></p> <ul> <li><span><strong>Langues -> Prise ne charge langue supplémentaires -> Installer les fichiers pour les langues d’Extrême-Orient</strong></span></li> <li><span><strong>Options avancées -> langues pour les programmes non Unicode -> Chinois (république de chine (RPC)</strong></span></li> <li><span><strong>Redémarrer l’ordinateur</strong></span></li> </ul> <p> </p> <h1>III] Un exemple pour le Russe</h1> <h2><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/134968iDF866A73D23F038E/image-size/original?v=mpbl-1&px=-1" border="0" alt="original4.png" title="original4.png"> </h2> <h2><span>IV] Mise en garde sur le nom des VI</span></h2> <p>Le code LabVIEW est compilé, mais le fichier de l'exe contient la liste des fcihiers. Si dans cette liste, un caractère n'est pas transposable dans la liste des caractères non unicode de la langue de l'OS, l'exe est brisé.</p> <p> </p> <p>la solution est comme toujours de suivre la régle d'être en ASCII court, donc utiliser les caractères non unicode universels sur les OS, donc les caractères Anglais!</p> <p>pas de é ou è ou ç ou à dans les nomns de VI ou autres! bonne chance</p> <p> </p> <h1><span>V] quelques liens sur le forum</span></h1> <p>quelques liens</p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/Afficher-des-textes-en-chinois/td-p/2761932" target="_blank">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Afficher-des-textes-en-chinois/td-p/2761932</a></p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/Texte-chinoix-sur-face-avant/td-p/1855663" target="_self">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Texte-chinoix-sur-face-avant/td-p/1855663</a></p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/Menu-unicode-codepage/td-p/2688015" target="_self">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Menu-unicode-codepage/td-p/2688015</a></p> <p> </p> <h1><span>VII] Localizing Your LabVIEW Application to Different Languages</span></h1> <p>Les conseils de National instruments pour la localisation</p> <p><a href="http://www.ni.com/tutorial/3603/en/" target="_blank">http://www.ni.com/tutorial/3603/en/</a> </p> <p> </p> <p><em>Luc Desruelle | </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif" width="64" height="36"></em></span></a><em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span>Voir mon prof</span><span>i</span><span><span>l</span></span></a> | </em> <a href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank">Mon blog LabVIEW</a></p> <p><em>CLA : </em><span><em>Certified</em></span><em> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br></em></p> <p><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank">Co-auteur livre LabVIEW : Programmation et applications</a></p> <p><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank">LabVIEW Champion</a></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=asap_bc?ie=UTF8" target="_blank"><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/178097iEEEEDCB7BD5B0771/image-size/original?v=lz-1&px=-1" border="0" alt="banniere Luc Livre.png" title="banniere champion.png" align="left"></a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Afficher-un-code-dans-plusieurs-langues-ou-LabVIEW-multilingue/ba-p/3486709" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Le logiciel ne se limite pas au code LabVIEW + Les outils qui Nous veulent du bien + NIDays 2014 Les outils qui Vous veulent du bien </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <h4>Conférence techniques NIDays 2014 : Dégager plus de temps pour coder avec les solutions NI</h4> <p><a href="http://download.ni.com/pub/branches/france/2014/nidays/presentations/2-2_Mesulog_Les%20outils_qui_vous_veulent_du_bien_degager_plus_de_temps_pour_coder_avec_les_solutions_NI.pdf" target="_blank">http://download.ni.com/pub/branches/france/2014/nidays/presentations/2-2_Mesulog_Les%20outils_qui_vous_veulent_du_bien_degager_plus_de_temps_pour_coder_avec_les_solutions_NI.pdf</a></p> <p> </p> <p> </p> <p><span><em><strong><em><em>0] Les outils qui nous veulent du bien - Plus de temps pour développer en LabVIEW</em></em></strong></em></span></p> <p> Présentation réalisée lors de la rencontre développeur du 4 juillet 2013, par <em>Mesulog - Luc Desruelle - <strong>Les Outils Qui Nous Veulent Du Bien</strong></em></p> <p> </p> <p>Sommaire :</p> <p>Où trouver de l'aide?</p> <p>Logiciel de gestion de code source</p> <p>FORGE</p> <p>Logiciel d'analyse et test de National Instruments</p> <p>Autres Outils dans la boite</p> <p>Machine Virtuelle</p> <p> </p> <p> </p> <p>et la suite à NIDays</p> <p> </p> <h5>Présentations techniques NIDays 2014</h5> <p><span>11 février 2014</span></p> <p>Les outils qui vous veulent du bien : dégager plus de temps pour coder avec les solutions NI, par Luc DESRUELLE, MESULOG, Certified LabVIEW Architect | certifié Architect LabVIEW</p> <p> </p> <p><em><span><em><strong><span>source : </span>J'ai beaucoup aimé cet article (mai 2013), sur les indispensables de la gestion de projet</strong></em></span> de <span>l'équipe JKI</span></em><span> : </span><a href="http://zone.ni.com/devzone/cda/pub/p/id/1743" target="_blank">http://zone.ni.com/devzone/cda/pub/p/id/1743</a>,</p> <p>j'ajoute des idées personnelles.</p> <p><span><strong><em><span><em>1] Suivi des problèmes et </em></span>gestion de projets logiciels</em></strong></span></p> <p> </p> <p><strong> [...]</strong></p> <p>Un suivi des problèmes simple et efficace est indispensable pour tout projet logiciel de taille raisonnable, tout particulièrement si le projet fait intervenir plusieurs développeurs. <img src="https://forums.ni.com/legacyfs/online/92164_ALM-cycle2.png" border="0" alt="ALM-cycle2.png"></p> <p> </p> <p><span>Gestion des bugs.</span></p> <p> </p> <p> </p> <p>Relier facilement les différentes versions du code source aux bugs ou aux caractéristiques qu'elles engendrent. Le fait de savoir exactement quand un bug est résolu est crucial pour nos projets et nos clients.</p> <p><strong> [...]</strong></p> <p><strong> </strong></p> <p> </p> <p><span><a href="https://tuleap.net/?utm_source=forge&utm_medium=forge&utm_campaign=forge" target="_blank"><span>https://tuleap.net/?utm_source=forge&utm_medium=forge&utm_campaign=forge</span></a> </span></p> <p><span><a href="http://www.enalean.com/produits/tuleap/" target="_blank">http://www.enalean.com/produits/tuleap/</a></span></p> <p><span><strong>L'objectif de cet outil, est de mettre à disposition de tous les acteurs autorisés, internes ou externes, l'ensemble des données du projet. </strong></span><span><strong>Ces données sont :</strong></span></p> <p><span><span>·</span> <span>documentation (spécifications, comptes-rendus, manuels, datasheets, procédures,...) tag unique</span></span></p> <p><span><span>·</span> <span>code source (gestion sous Subversion, https)</span></span></p> <p><span><span>·</span> <span>livrables (exécutables, installeurs) release #ID unique</span></span></p> <p><span><span>·</span> <span>suivi de tâches (gestion de projet) task #ID unique</span></span></p> <p><span><span>·</span> <span>suivi de bugs (bug #ID unique)</span></span></p> <p><span><span>·</span> <span>espace de téléchargement FTP</span></span></p> <p><span><span>·</span> <span>forums de discussion</span></span></p> <p><span><span>·</span> <span>wiki (écriture collaborative de pages web)</span></span></p> <p><span><span>·</span> <span>messagerie instantanée</span></span></p> <p><span><span>....</span> </span></p> <p><span>L'accès à ces données est sécurisé (certificat d'authenticité) et le transfert des données est crypté.</span></p> <p><span>Les commentaires des livraisons SVN est croisé avec les tags #ID unique des bugs - livrable - task. L'historique du projet est ainsi redoutable. </span></p> <p><span>Les personnes identifiées et membres du projet peuvent accéder à toutes ces informations à partir de n'importe quel navigateur internet sans avoir à solliciter leur département informatique, ni installer un quelconque programme sur leur poste de travail. Il est juste nécessaire d’activer les cookies.</span></p> <p><span>Les projets sont créés suivant un modèle.</span></p> <p> </p> <p> </p> <p><span><em><strong><span><strong><em><em>2] </em></em></strong></span>Contrôle du code source</strong></em></span></p> <p><span><a href="https://forums.ni.com/activision-blogpost/10775" target="_blank">Utilisation du contrôle de source (pour LabVIEW et autres...)</a></span></p> <p><strong> [...]</strong><span>Le contrôle du code source est l'un des aspects les plus élémentaires (mais aussi les plus négligés) du développement logiciel professionnel. Un système de contrôle du code source fournit les versions des fichiers pour l'ensemble de votre projet. Le contrôle du code source permet à plusieurs développeurs de vérifier l'arborescence source d'un projet et d'éviter aux ingénieurs d'écraser le travail des autres.</span></p> <p><strong> [...]</strong></p> <p> </p> <p><span><em>SVN et TortoiseSVN </em><strong><img src="https://forums.ni.com/legacyfs/online/90821_turtoisesvn.png" border="0" alt="turtoisesvn.png" width="91" height="60"> </strong></span><span>Les commentaires des livraisons SVN est croisé avec les tags #ID unique des bugs - livrable - task qui sont créés par le logiciel de gestion de projet : Codex. L'historique du projet est ainsi redoutable.</span></p> <p> </p> <h1><span><em><span><em><em>3] </em></em></span>Intégration continue<br></em></span><span>cf JKI</span></h1> <p><strong> [...] </strong>Que se passerait-il si vous n'aviez plus jamais à concevoir votre logiciel de façon manuelle ? Imaginez un outil qui pourrait détecter de façon intelligente chaque changement apporté au logiciel, un outil qui construirait et testerait automatiquement une application à votre place, de façon à ce que vous puissiez toujours disposer d'un code fonctionnel et fiable.</p> <p><span>Les logiciels d'intégration continue offrent ces avantages aux développeurs. </span></p> <p><strong> [...]</strong></p> <p>Chez JKI : <a href="http://jenkins-ci.org/" target="_blank">Jenkins</a>.</p> <p> </p> <p> </p> <p> </p> <h1><span><span><strong><em><em>4] </em></em></strong></span><a href="https://forums.ni.com/people/Luc_Desruelle/blog/2013/06/04/outils-de-g%C3%A9nie-logiciel-et-de-validation" target="_blank"><span>Outils de génie logiciel et de validation</span></a> </span></h1> <h1><span><a href="https://forums.ni.com/activision-blogpost/10844" target="_blank">Outils de génie logiciel et de validation</a></span></h1> <p> </p> <div> <div> <div> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/8330" target="_blank"><span>NI Requirements Gateway</span></a> : solution de traçabilité des exigences qui relie vos documents de développement et de vérification aux exigences formelles stockées dans les documents et les bases de données. </p> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/3588" target="_blank"><span>Toolkit LabVIEW VI Analyzer</span></a> : 60 tests destinés à la révision automatisée et à l'analyse statique du code de tous les VIs d'une application. Possibilité d'ajouter ses propres tests</p> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/8083" target="_blank"><span>Toolkit LabVIEW Desktop Execution Trace</span></a> : permet de mettre au point et de déboguer des applications LabVIEW en fournissant des détails bas niveau sur l'exécution des VIs et des exécutables. surveiller le code et identifier la source de problèmes tels que les fuites de référence, les fuites de mémoire, les erreurs non gérées et d'autres problèmes pouvant avoir un impact négatif sur les performances et sur la fiabilité d'une application</p> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/8082" target="_blank"><span>Toolkit LabVIEW Unit Test Framework</span></a></p> <p> </p> </div> </div> </div> <p> </p> <p> </p> <h1><span><span><strong><em><em>5] </em></em></strong></span> Logiciel autres d'Aide utilisateur</span></h1> <h2><span>5.1] Documentation et manuel : </span><span>L'enregistreur d'action utilisateur ... de Windows</span><span>!<img src="https://forums.ni.com/legacyfs/online/90820_psr.png" border="0" alt="psr.png" width="252" height="152"> </span></h2> <p> </p> <p><span>L'enregistreur d'action utilisateur est une fonction cachée de Windows 7. Il permet d'enregistrer une manipulation à effectuer. Sauvegarde directement du descritpif des actions, images et commentaires dans un fichier<br><br>Dans le menu Démarrer de Windows, tapez les lettres "PSR", l'enregisteur va s'afficher :</span></p> <p> </p> <p> </p> <p> </p> <p> </p> <h2><span>5.2] Automatisation de tâches, simulation actions / applications utilisateurs : Autoit</span></h2> <p><span><a href="http://fr.wikipedia.org/wiki/Autoit" target="_blank">http://fr.wikipedia.org/wiki/Autoit</a></span></p> <p><span><a href="http://www.siteduzero.com/informatique/tutoriels/la-programmation-avec-autoit" target="_blank">http://www.siteduzero.com/informatique/tutoriels/la-programmation-avec-autoit</a></span></p> <p> </p> <p>Une utilisation populaire d'AutoIt est la production de logiciel utilitaire pour Microsoft Windows. Des tâches communes, comme le contrôle de site Web, le contrôle de réseau, la défragmentation de disques et la sauvegarde, peuvent être automatisées et combinées pour fournir une utilité personnalisée. Il est aussi utilisé pour simuler des applications utilisateurs, par lequel un script AutoIt <em>pilote</em> une application en lieu et place d'un contrôle manuel pendant le test d'un logiciel. Une autre utilisation d'AutoIt est de créer des <em><a title="Bot informatique" href="http://fr.wikipedia.org/wiki/Bot_informatique" target="_blank">bots</a></em> pour les jeux en ligne ou des <a title="Malware" href="http://fr.wikipedia.org/wiki/Malware" target="_blank">malwares</a><sup><a href="http://fr.wikipedia.org/wiki/Autoit#cite_note-4" target="_blank"><span>[</span>4<span>]</span></a></sup>. Ce type d'utilisation ne faisait pas partie des objectifs du programme et n'est en aucune façon encouragée par les développeurs ainsi que la communauté AutoIt.</p> <p> </p> <p> </p> <p> </p> <h3>5.3] Machine Virtuelle pour le développement logiciel (VM VirtualBox)</h3> <p> </p> <p><span>Virtualisation : </span><span>simuler l'existence de plusieurs machines informatiques sur une seule.</span></p> <p><span>Machine de développement : une machine virtuelle par plate-forme de développement </span></p> <p> </p> <p><span>Machine Virtuelle pour le développement </span></p> <p><span>>>>> Les avantages </span></p> <p><span>• Sécurisation des plates-formes de développement (quelques fichiers à copier) : sauvegarde – retour en arrière possible. </span></p> <p><span>•Installation, déploiement et migration facile des machines virtuelles d’une machine physique à une autre (copier – coller) </span></p> <p><span>•Une machine virtuelle par version de LabVIEW : plus de conflit de version </span></p> <p><span>•Facilité pour test de driver, logiciel et anciens OS </span></p> <p> </p> <p><span>>>>> Les inconvénients </span></p> <p><span>•Lenteur réseau, port série, USB,… </span></p> <p><span>•Difficulté à installer un véritable matériel par exemple matériel National Instruments </span></p> <p><span>•Conseillé d’utiliser une « Grosse » machine physique (8 Go RAM, processeurs muli-core, </span></p> <p><span>•Gestion des licences : une Machine Virtuelle = une licence </span></p> <p><span>•Taille sur le disque de la machine virtuelle et de ses snapshots </span></p> <h3> </h3> <h1><span><span><strong><em><em>6] </em></em></strong></span>Documentation</span></h1> <p>Voir le post</p> <p><span><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/Bonnes-pratiques-documentation/td-p/2753842/page/2" target="_blank">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Bonnes-pratiques-documentation/td-p/2753842/page/2</a></span></p> <p> </p> <p><em><span>Luc Desruelle </span>| </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><em> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"><span>Voir mon profil</span></span></a></p> <p>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p> </p> <div> </div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Le-logiciel-ne-se-limite-pas-au-code-LabVIEW-Les-outils-qui-Nous/ba-p/3484793" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> La gestion des interruptions sous LabVIEW - niveaux de priorité - Scheduler </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/Les-interruptions/m-p/2446998/highlight/true#M7666" target="_blank">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Les-interruptions/m-p/2446998/highlight/true#M7666</a></p> <p> </p> <p>j'ai bcp aimé l'article de Florina Abry - Naity</p> <p> </p> <h1>Re : Les interrupti​ons.</h1> <p>le <span><span>‎03-06-2013</span><span>10:31 AM</span></span></p> <p><span><span>par </span></span></p> <p><em><span><span><strong>Florian Abry</strong><br>Application Engineer<br>NI Germany</span></span></em></p> <p> </p> <p> </p> <div> <div> <p>Bonjour,</p> <p> </p> <p>Je me permets de rajouter un mot ou deux sur ce qu'a dit Ouadji.</p> <p> </p> <p>Lors de la programmation micro contrôleur, on programme directement en langage machine. <span><strong>Il est donc nécessaire de gérer les interruptions de manière manuelle pour autoriser le contrôleur d’exécuter plusieurs tâches de manière pseudo-para</strong></span>llèle.</p> <p> </p> <p>L’introduction des systèmes d’exploitation à changer la donne. Ces systèmes (type Windows) proposent une surcouche logicielle qui s’occupe, entre-autre, de gérer les exploitations. Cette action est réalisée via un de leur composant nommé « Scheduler » (ou ordonnanceur en français, voir <a title="Ordonnancement dans les systèmes d'exploitation" href="https://fr.wikipedia.org/wiki/Ordonnancement_dans_les_syst%C3%A8mes_d'exploitation" target="_self" rel="nofollow">wiki</a>).</p> <p> </p> <p>Ce Scheduler s’occupe, via un algorithme bien définit, de gérer les interruptions des différentes tâches concurrentes tournant sur un même système (on parle de Process (processus) pour els différentes applications tournant en parallèle (par Exemple, Windows en parallèle avec Foobar pour la musique, Opera pour le web et un client Thunderbird pour les mails. Le Scheduler doit faire en sorte que vous puissiez surfer tout en écoutant de la musique) et de Threads pour les tâches parallèle au sein d’un même processus (exemple type : Windows Media Player à un visualizer qui tourne en parallèle avec le lecteur de musique)). Pour que tout ce beau monde tourne d’une manière donnant l’illusion d’être parallèle, le Scheduler doit sans cesse jongler avec ces threads en les interrompant les-uns les autres.</p> <p> </p> <p>Les premiers scheduler (celui de Windows 3 par exemple, si je ne dis pas de bêtises) se contentaient de laisser un temps défini à chaque thread, sans notion de priorité. C’est ce que l’on appelle le « Round-Robin Scheduling » (<a title="Round-Robin" href="https://fr.wikipedia.org/wiki/Round-robin_(informatique)" target="_self" rel="nofollow">wiki</a>). Plus tard, un autre type de scheduling à fait son apparition, plus proche des possibilités données par els interruptions de Microcontrôleur : Le « Preemptive Scheduling » (<a title="Multitâche préemptif" href="http://fr.wikipedia.org/wiki/Multit%C3%A2che_pr%C3%A9emptif" target="_self" rel="nofollow">wiki</a>). Cet algorithme d’ordonancement permet d’allouer des niveaux de priorité aux tâches pour qu’une tâche de priorité plus importante interrompe toutes tâches de prioroité moindre lorsque celle-ci doit être exécutée.</p> <p> </p> <p> </p> <p><strong>Oui mais LabVIEW dans tout ca ?</strong></p> <p> </p> <p> </p> <p>Il y a d’autres types d’ordonnancement, mais ces deux là représentent de mon point de vue la base nécessaire à comprendre les systèmes d’interruptions des systèmes d’exploitation sur lesquels LabVIEW tourne.</p> <p> </p> <p>Je me focaliserais sur deux d’entre-eux :</p> <p> </p> <p><span>Windows 7 :</span></p> <p>Je ne suis pas extrêmement familier avec le Scheduler de Windows 7. De ce que j’en ai compris, il fonctionne comme un mix de Scheduling Round-Robin et de Preemptive Scheduling. Les différentes tâches ont des niveaux de priorité. Les tâches de haute priorité interrompent les tâches de basses priorités. Cependant, il me semble que le scheduler peut aussi interrompre les tâches de haute priorité si celles-ci prennent trop de temps d’exécution pour garantir une exécution minimale pour els tâches de basse priorité. La plupart des niveaux de priorité ne sont utilisables que par le Système d’exploitation.</p> <p> </p> <p> </p> <p>Cela signifie qu’un <strong>programme labVIEW peut avoir différent niveaux de priorité, mais jamais les plus haut et qu’une tâche exécutée sous labVIEW peut être à tout moment interrompue par Windows</strong>.</p> <p> </p> <p>Pour changer le niveau de priorité, il y a 3 méthodes :</p> <p> </p> <p>* Définir le processus LabVIEW.exe comme processus de haute priorité dans le gestionnaire des tâches de Windows.</p> <p>* Utiliser une « Timed Loop ». Ce faisant, vous réduirez l’algorithme dans la boucle à un thread et ce thread sera d’une plus haute priorité que les autres threads du processus en cours. Attention donc, la réduction de l’algorithme à un thread peut entrainer des Race Conditions assez dramatiques et cette priorité n’est que relative au programme. Les autres programmes et processus (dont ceux de windows) peuvent interrompre ce thread à tout moment.</p> <p>* Dans les propriétés ‘exécution d’un VI, il est possible de configurer la priorité de ce VI. Encore une fois, cette priorité est relative aux autres Vis.</p> <p> </p> <p>Conclusion : il n’est pas possible de créer de « vrais » mécanismes d’interruption pour un programme LanVIEW sous Windows.</p> <p> </p> <p> </p> <p> </p> <p><span>LabVIEW Real-Time OS :</span></p> <p> </p> <p>Le Scheduler de LabVIEW Real-Time OS fonctionne de manière quasi purement préemptive. Toute tâche de priorité supérieure interrompra une tâche de priorité inférieure et toute tâche de priorité inférieure ne pourra être exécutée qu’une fois toutes les tâches de priorité supérieures finies. En cas de tâches de priorité équivalente, c’est la règle de « Round Robin » qui s’applique. LabVIEW Real-Time autorise LabVIEW à utiliser tous les niveaux de priorité.</p> <p> </p> <p>Les moyens de définir cette priorité est équivalente aux deux derniers points soulevés dans le paragraphe sur Windows, avec la particularité que cette fois, la priorité d’une tâche est absolue.</p> <p> </p> <p>Conclusion : Même si les interruptions processeur sont prise en charge par la surcouche logicielle du système d’exploitation, il est possible d’avoir un contrôle quasi-total sur les interruptions (avec la seule limite que LabVIEW n’autorise pas à donner une priorité telle à un processus que celui-ci pourrait interrompre le scheduler).</p> <p> </p> <p>J’espère que cette petite explication sera utile à tous. N’hésitez pas à donner des Kudos si c’est le cas.</p> <p> </p> <p>Cordialement</p> </div> </div> <div></div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/La-gestion-des-interruptions-sous-LabVIEW-niveaux-de-priorit%C3%A9/ba-p/3484945" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Outils de génie logiciel et de validation pour LabVIEW par développeur certifié </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p>Outils de génie logiciel et de validation <a href="http://www.ni.com/softwareengineering/f/" target="_blank">http://www.ni.com/softwareengineering/f/</a></p> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/8330" target="_blank">NI Requirements Gateway</a></p> <p>NI Requirements Gateway est une solution de traçabilité des exigences qui relie vos documents de développement et de vérification aux exigences formelles stockées dans les documents et les bases de données. NI Requirements Gateway est une solution idéale pour des applications qui simulent ou testent des composants complexes par rapport aux exigences documentées dans des industries telles que l'automobile, la défense, l'aérospatiale et l'électronique grand public.</p> <p> </p> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/3588" target="_blank">Toolkit LabVIEW VI Analyzer</a></p> <p>Le Toolkit VI Analyzer permet d'accroître la qualité et la lisibilité du code graphique développé en LabVIEW. Configurez plus de 60 tests destinés à la révision automatisée et à l'analyse statique du code de tous les VIs d'une application.</p> <p><a href="https://forums.ni.com/activision-blogpost/10840" target="_blank">List of Community VI Analyzer Tests</a></p> <p> </p> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/8083" target="_blank">Toolkit LabVIEW Desktop Execution Trace</a></p> <p>billet par LD synthèse : <a href="https://forums.ni.com/activision-blogpost/10835" target="_blank">Desktop Execution Trace Toolkit : DETT Saves the Day!</a></p> <p> </p> <p>Le Toolkit LabVIEW Desktop Execution Trace permet de mettre au point et de déboguer des applications LabVIEW en fournissant des détails bas niveau sur l'exécution des VIs et des exécutables. Le code peut être surveillé et vous pourrez facilement identifier la source de problèmes tels que les fuites de référence, les fuites de mémoire, les erreurs non gérées et d'autres problèmes pouvant avoir un impact négatif sur les performances et sur la fiabilité d'une application.</p> <p> </p> <p> </p> <p><a href="http://zone.ni.com/devzone/cda/tut/p/id/8082" target="_blank">Toolkit LabVIEW Unit Test Framework</a></p> <p>Le Toolkit LabVIEW Unit Test Framework automatise le test et la validation sur la base des exigences des unités logicielles (VIs) développées en LabVIEW. Il permet ainsi le test fonctionnel du logiciel et le test de régression. Les fonctionnalités de création de rapports incluses génèrent automatiquement les documents de validation précieux pour documenter le respect des exigences par une application et pour assurer que son comportement reste situé dans les limites de paramètres définies</p> <p> </p> <p>Prove It Works: Using the Unit Test Framework for Software Testing and Validation : <a href="http://www.ni.com/white-paper/8082/en" target="_blank">http://www.ni.com/white-paper/8082/en</a></p> <p> </p> <p><em><span>Luc Desruelle </span>| </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><em> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"><span>Voir mon profil</span></span></a></p> <p>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <div></div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Outils-de-g%C3%A9nie-logiciel-et-de-validation-pour-LabVIEW-par/ba-p/3484980" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> ModBus et LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <h1>1- résumé "simple", avec code toolkit NI</h1> <p> </p> <p>Avec les API LabVIEW, il est possibile d'utiliser le protocole Modbus, sans savoir comment il est codé.</p> <p>Cela est totalement transparent pour le développeur.</p> <p>Il est "quand même intéressant" de connaître quelques bases.</p> <p><span>autres liens : </span><a href="http://www.developpez.net/forums/blogs/884588-luc-desruelle/b752/protocole-modbus-tcp-labview/" target="_blank">http://www.developpez.net/forums/blogs/884588-luc-desruelle/b752/protocole-modbus-tcp-labview/</a></p> <p> </p> <h2><span>1.A) Modbus série "ASCII" ou "RTU"</span></h2> <p><span>En Modbus série, le maître se connecte à l'esclave. Dès que la liaison est établie, le maître envoie des requêtes Modbus (Requests) à l'esclave. Ces requêtes sont traitées par l'esclave. Le résultat est renvoyé au maître sous forme de réponse Modbus (Response).</span></p> <p> </p> <p>Il existe 2 protocoles série :</p> <ul> <li><span>RTU est le protocle le plus utilisé, avec calcul de CRC</span></li> <li><span>ASCII avec calcul du LRC<br></span></li> </ul> <p> </p> <p><span><img src="https://forums.ni.com/legacyfs/online/192905_configuration%20serie%20modbus%20VISA.png" border="0" alt="configuration serie modbus VISA.png" width="620"></span></p> <p> </p> <h3><span>1.A.a) exemple create <span><strong>Modbus serial ASCII master </strong></span>exemple</span></h3> <p><span><img src="https://forums.ni.com/legacyfs/online/192958_create%20Modbus%20serial%20ASCII%20master%20exemple.png" border="0" alt="create Modbus serial ASCII master exemple.png" width="620"></span></p> <p> </p> <h3><span>1.A.b) exemple create <span><strong>Modbus serial RTU master </strong></span>exemple</span></h3> <p> </p> <p><span><img src="https://forums.ni.com/legacyfs/online/192959_create%20Modbus%20serial%20RTU%20master%20exemple.png" border="0" alt="create Modbus serial RTU master exemple.png" width="620"><br></span></p> <p><span> </span></p> <h2><span>B) Modbus "TCP"</span></h2> <p><span>En Modbus TCP, le client (maître) se connecte au serveur (esclave). Dès que la liaison est établie, le client envoie des requêtes Modbus (Requests) au serveur. Ces requêtes sont traitées par le serveur. Le résultat est renvoyé au client sous forme de réponse Modbus (Response). </span></p> <p> </p> <p><span>Il existe, dans la spécification modbus, uniquement le transport TCP ou IP.</span></p> <p> </p> <h3><span><span>1.B.a) </span>exemple <span><strong>create Modbus TCP master </strong></span>exemple</span></h3> <p> </p> <p><span><img src="https://forums.ni.com/legacyfs/online/192960_create%20Modbus%20TCP%20master%20exemple.png" border="0" alt="create Modbus TCP master exemple.png"><br></span></p> <p> </p> <p><span>Il est utilisé, rarement, 2 autres modes:</span></p> <h3><span>1.B.b) avec Gateway modbus, besoin d'ajouter le "Unit ID" : </span><span>exemple <span><strong>create Modbus TCP master with unit_ID</strong></span> exemple</span></h3> <p><span><img src="https://forums.ni.com/legacyfs/online/192961_create%20Modbus%20TCP%20master%20with%20unit_ID%20exemple.png" border="0" alt="create Modbus TCP master with unit_ID exemple.png" width="620"></span></p> <p><span> </span></p> <h3><span><span>1.B.c) </span>le protocole RTU sur couche de transport TCP, sous le nom "modbus RTU over TCP" </span></h3> <p><span>( pour le code <a href="https://forums.ni.com/activision-blogpost/19981" target="_blank">Modbus RTU over TCP Master with LabVIEW</a>)</span></p> <p><span>exemple <span><strong>create Modbus RTU over TCP master</strong></span> exemple</span></p> <p><span><span><img src="https://forums.ni.com/legacyfs/online/192962_create%20Modbus%20RTU%20over%20TCP%20master%20exemple.png" border="0" alt="create Modbus RTU over TCP master exemple.png"></span><br></span></p> <p> </p> <p> </p> <p>Plus d'information : <a href="https://forums.ni.com/activision-blogpost/19981" target="_blank">Modbus RTU over TCP Master with LabVIEW</a></p> <p> </p> <p> </p> <h1>2 - résumé PDU, ADU et Frame d'une trame Modbus</h1> <p> </p> <h2><span>A) P</span><span>rotocole PDU</span></h2> <p><span>Le protocole Modbus définit un (Protocol Data Unit) Modbus-PDU, qui ne dépend pas de la couche de communication correspondante. Ce Modbus-PDU se compose des deux champs "Function Code" et "Data". </span></p> <p><span>Grâce au blindage de "Function Code" et "Data" dans Modbus-PDU, les services Modbus et le modèle d'objet restent identiques pour toutes les variantes Modbus.</span></p> <p> </p> <p><span><img src="https://forums.ni.com/legacyfs/online/192904_PDU%20modbus.png" border="0" alt="PDU modbus.png" width="620"><br></span></p> <h2><span>B) Transport et ADU</span></h2> <p><span>En fonction de la représentation sur les différents protocoles réseau, Modbus-PDU est complété par des champs supplémentaires (MBAP Header) pour le Modbus-ADU (Application Data Unit). </span></p> <p> </p> <p> </p> <p><span>Modbus-PDU et Modbus-ADU composent ensemble le message Modbus, également désigné par "Frame" (trame).</span></p> <p><span> </span></p> <h1>3 - Introduction à ModBus</h1> <p>MASTER VS SLAVE</p> <p>Ethernet TCP/IP VS Serial</p> <p> </p> <p>Master donne l'ordre de l'action de lire ou écrire au slave qui va réaliser l'action de donner la valeur (lecture) ou sauvegarder la valeur dans sa mémoire (écriture)</p> <p>En ethernet TCP/IP Master (client) VS Slave (Serveur de données)</p> <p><img src="https://ip1.i.lithium.com/ae9b7e1e3edc0b33bd0b2d00623f254053bf9f35/687474703a2f2f7777772e6e692e636f6d2f636d732f696d616765732f6465767a6f6e652f7475742f612f63393131373462343836332e676966" border="0" width="243" height="278"></p> <p> </p> <div> <div> <div> <div> <div> <div> <div> <div> <p> </p> <p>Un très bon article, en français, sur le protocole ModBus : <span><a href="http://www.ni.com/white-paper/52135/fr/" target="_blank">http://www.ni.com/white-paper/52135/fr/</a> </span></p> <p> </p> <p><a href="http://www.ni.com/white-paper/7675/en" target="_blank">http://www.ni.com/white-paper/7675/en</a></p> <p>The Modbus protocol follows a master/slave architecture where a master will request data from the slave. The master can also ask the slave to perform some action. The master initiates a process by sending a function code that represents the type of transaction to perform. The transaction performed by the Modbus protocol defines the process a controller uses to request access to another device, how it will respond to requests from other devices, and how errors will be detected and reported. The Modbus protocol establishes a common format for the layout and contents of message fields.</p> <p>The messages exchanged between the master and the slave are called frames. There are two types of Modbus frames: Protocol Data Unit (PDU) and Application Data Unit (ADU). The PDU frames contain a function code followed by data. The function code represents the action to perform and the data represents the information to be used for this action. ADU frames add a little more complexity with an additional address part. ADU frames also provide some error checking. Both the ADU and PDU frames follow Big-Endian encoding.</p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/104192_fig3_modbus_frame_20120316151705.png" border="0" alt="fig3_modbus_frame_20120316151705.png"></p> <p align="center"> </p> <table border="1" cellspacing="0" cellpadding="0" align="center"> <tbody> <tr> <th width="34%">Primary Tables</th> <th width="33%">Object Type</th> <th width="33%">Type of</th> </tr> <tr> <td>Discrete Input</td> <td width="33%">Single bit - boolean</td> <td width="33%">Read-Only</td> </tr> <tr> <td>Coils</td> <td width="33%">Single bit - boolean</td> <td width="33%">Read-Write</td> </tr> <tr> <td>Input Registers</td> <td width="33%">16-bit word</td> <td width="33%">Read-Only</td> </tr> <tr> <td>Holding Registers</td> <td width="33%">16-bit word</td> <td width="33%">Read-Write</td> </tr> </tbody> </table> <p align="center">Table 1: Modbus Data Types<sup>1</sup></p> <p> </p> <h1>4<a target="_blank"></a> - Serial Implementation</h1> <p>There are two serial modes that the Modbus application layer can follow: RTU and ASCII. </p> <p>In RTU, the data is represented in Binary format, whereas the ASCII mode represents the data such that it is human readable. </p> <p align="center"> </p> <p align="center"><img src="https://ip1.i.lithium.com/f045aad9b39ab49c7830416573807a11b13f7099/687474703a2f2f7777772e6e692e636f6d2f636d732f696d616765732f6465767a6f6e652f7475742f666967385f4d6f646275735f5254555f53657269616c5f4672616d655f32303132303331363135353134362e706e67" border="0"></p> <p align="center"><img src="https://ip1.i.lithium.com/06a4814a1be37ca1307d11c9608375d824b387da/687474703a2f2f7777772e6e692e636f6d2f636d732f696d616765732f6465767a6f6e652f7475742f666967395f4d6f646275735f41534349495f53657269616c5f4672616d655f32303132303331363135353134362e706e67" border="0"></p> <p align="center">Figure 8: Modbus ASCII Serial Frame<sup>1</sup></p> <p align="center"> </p> <p align="center">Figure 9: Modbus TCP Frame<sup>1</sup></p> <table border="1" cellspacing="0" cellpadding="0" align="center" bgcolor="#d6e0ec"> <tbody> <tr> <td> </td> <th>Description</th> <th>Size</th> <th>Example</th> </tr> <tr> <td rowspan="5">MBAP Header</td> <td>Transaction Identifier Hi</td> <td>1</td> <td>0x15</td> </tr> <tr> <td>Transaction Identifier Lo</td> <td>1</td> <td>0x01</td> </tr> <tr> <td>Protocol Identifier</td> <td>2</td> <td>0x0000</td> </tr> <tr> <td>Length</td> <td>2</td> <td>0x0006</td> </tr> <tr> <td>Unit Identifier</td> <td>1</td> <td>0xFF</td> </tr> </tbody> </table> <p align="center">Figure 10: MBAP Header<sup>1</sup></p> <p align="center"> </p> <h1>5<a target="_blank"></a> - TCP Implementation</h1> <p>As in many TCP applications, the first requirement is to establish a connection between the master and the slave.  When connection has been established, the master can build a request for the slave.  The request contains a PDU (Modbus frame described above) followed by a MPAB header, as shown in Figure 9.  Figure 10 represents a template for the MPAB header.     </p> <p align="center"> </p> <p align="center"><img src="https://ip1.i.lithium.com/a81fd3c478a099e6808cfe6da6ab3d581eded6c0/687474703a2f2f7777772e6e692e636f6d2f636d732f696d616765732f6465767a6f6e652f7475742f656c7a7377656c6a323335363039313833323730303232363434342e6a7067" border="0"></p> <p> </p> <p> </p> <h1><a target="_blank"></a> 6 - Using LabVIEW With Modbus, version gratuite librairie Modbus LabVIEW</h1> <p>L'ancienne : <a title="Bibliothèque LabVIEW Modbus" href="http://sine.ni.com/nips/cds/view/p/lang/fr/nid/201711" target="_self" rel="nofollow">Bibliothèque LabVIEW Modbus</a> le toolkit de NI</p> <p> </p> <p>Nouvelle librairie Modbus utilisant la POO  à partir de  LabVIEW 2011  :  <a href="https://forums.ni.com/docs/DOC-30140" target="_blank">https://decibel.ni.com/content/docs/DOC-30140</a></p> <p align="center"> </p> <h1>7 - Exemples codes, tester communication modbus, analyse problèmes</h1> <p><a href="http://www.ni.com/white-paper/3055/en" target="_blank" rel="nofollow">http://www.ni.com/white-paper/3055/en</a></p> <p><a href="http://www.ni.com/white-paper/4433/en" target="_blank" rel="nofollow">http://www.ni.com/white-paper/4433/en</a></p> <p><a href="http://www.ni.com/white-paper/3982/en" target="_blank" rel="nofollow">http://www.ni.com/white-paper/3982/en</a></p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/labview-tcp-ip-multi-client/m-p/1999103/highlight/true#M2237" target="_blank">http://forums.ni.com/t5/Discussions-au-sujet-de-NI​/labview-tcp-ip-multi-client/m-p/1999103/highlight​...</a></p> <p> </p> <p>Analyse d'un problème ModBus :</p> <p>> version de l'OS Windows ? + 32bits ou 64?</p> <p> </p> <p>> test ping</p> <p>> firewall sur PC serveur (le port modbus utilise le port 502 sur un PC serveur ModBus. Il n'y a pas de firewall sur le PC qui a le serveur? Firewall de Windows le désactiver pour test)</p> <p>> Faire vi exemple : Open TCP + Read Input register + close avec affichage du code cluster d’erreur</p> <p> </p> <p>Tester l'EXE sur qui fonctionne avec labVIEW développement  : valider que cela fonctionne sans erreur</p> <p>Tester l'EXE sur le PC sur lequel l'application ne fonctionne et sur plusieurs PC pour comparer</p> <p> </p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/1778808/page/3" target="_blank" rel="nofollow">http://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/1778808/page/3</a></p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/1778808/page/3" target="_blank"><span>http://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/1778808/page/3</span></a></p> <p> </p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/174880_ModBus%20TCP%20exemple%20Mesulog%20Luc%20Desruelle.png" border="0" alt="ModBus TCP exemple Mesulog Luc Desruelle.png" width="620"></p> <p> </p> <h1> </h1> </div> </div> </div> </div> </div> </div> </div> </div> <div> </div> <p> </p> <p> </p> <p> </p> <p><span>Luc Desruelle |</span> <a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank" rel="nofollow">Voir mon profil | </a><a href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank" rel="nofollow">Mon blog LabVIEW</a><br><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank" rel="nofollow"><span>Co-auteur livre LabVIEW : Programmation et applications</span></a><br><span>Certified LabVIEW Architect (CLA)</span><br><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank" rel="nofollow"><span>LabVIEW Champion</span></a></p> <p><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=asap_bc?ie=UTF8" rel="nofollow" target="_blank"><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/178097iEEEEDCB7BD5B0771/image-size/original?v=lz-1&px=-1" border="0" alt="banniere Luc Livre.png" title="banniere champion.png" align="left"></a></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/ModBus-et-LabVIEW/ba-p/3485385" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Quand faut-il fermer une référence sous LabVIEW? </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p><span>Pour faire simple, il n'est besoin de fermer que les références "créés" programmatiquement, et pas par "clic droit" </span></p> <p><a href="http://www.ni.com/white-paper/5320/en/" target="_blank">http://www.ni.com/white-paper/5320/en/</a></p> <p><a href="http://www.ni.com/white-paper/14393/en/" target="_blank">http://www.ni.com/white-paper/14393/en/</a><span>  </span></p> <p> </p> <p><span>The standard method of referencing objects is to open a reference to the object, use the object, and close the reference to the object. Whether you close a control reference depends on how you generated it-with a control reference constant, a Property Node, or the Event structure  </span></p> <p> </p> <p><span>When you open a reference to an application, project, VI, or other reference source, LabVIEW allocates memory to store that reference. To free up the space in memory where LabVIEW stored the reference source, you must close the reference. It is always safe to close a reference when you no longer need it. You can use the Close Reference function (linked below) to close a reference.   </span></p> <p> </p> <p><span>Exceptions : Implicit References and Unwired Property and Invoke Nodes  Although you should usually close references when you no longer need them, you can leave implicit references and references returned in the reference out terminal of unwired property and invoke nodes open, shown below, because a Close Reference function does not actually close these references or remove the target objects from memory.    </span></p> <p> </p> <p><span>If you do not close a reference, your application is susceptible to reference leaks that can use up memory and slow the execution time of the application. LabVIEW automatically closes a reference when the top-level VI that opened the reference goes idle, but if the application runs for extended periods of time, the effects of reference leaks gradually increase.</span></p> <p> </p> <p><span>Quelques exemples de référence à ne pas fermer<br></span></p> <p><img src="https://forums.ni.com/legacyfs/online/187986_ref2.png" border="0" alt="ref2.png" width="620"></p> <p> </p> <p>De même (le close n'est pas utile)</p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/187985_ref.png" border="0" alt="ref.png" width="620"></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Quand-faut-il-fermer-une-r%C3%A9f%C3%A9rence-sous-LabVIEW/ba-p/3475952" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Get Computer Name - Nom du PC sous LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p><img src="https://forums.ni.com/legacyfs/online/177031_Get%20Computer%20Name.png" border="0" alt="Get Computer Name.png"></p> <p> </p> <p> </p> <p>Permet de récupérer sous LabVIEW le nom du PC</p> <p>Get computer Name</p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Get-Computer-Name-Nom-du-PC-sous-LabVIEW/ba-p/3476291" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Exécuter une commande système avec l'invite de commande sous LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <h1>I] Introduction : les problèmes avec l'invite de commande</h1> <p>Il est possible de faire "beaucoup de choses" avec <em><strong>l'invite de commande de Windows</strong></em>, la fameuse fenêtre "cmd" de Windows.</p> <p> </p> <p>Sous LabVIEW, il faut utiliser le vi "<strong>Commande système" connu sous le nom </strong> "<strong>system Exec.vi</strong>".</p> <p><img src="https://forums.ni.com/legacyfs/online/177060_commande%20systeme.png" border="0" alt="commande systeme.png"></p> <p><span>Le vi permet d'exécuter une commande système, une ligne de commande au niveau du système ,qui peut inclure tous les paramètres supportés par l'application que vous voulez lancer</span></p> <p> </p> <ul> <li>Mais comment bien l'utiliser?  En effet comment gérer l'erreur retournée par la commande système ?</li> <li>Mais dans quelle langue est le texte? Avez-vous regardé le texte de la sortie? texte "étrange"? avec des <em>R‚ponse</em> des <em><strong>::1ÿ:</strong></em></li> <li>Comment analyser le retour de la fenêtre?</li> </ul> <p> </p> <p><em>Exemple de réponse de la commande système via LabVIEW:</em></p> <p><strong>Envoi d'une requˆte 'ping' avec 32 octets de donn‚esÿ: </strong></p> <p><strong>R‚ponse de ::1ÿ:ponse de ::1ÿ: temps<1ms  </strong></p> <p><strong>R‚ponse de ::1ÿ: temps=2 ms  </strong></p> <p><strong>Statistiques Ping pour ::1:     Paquetsÿ: envoy‚s = 4, re‡us = 4, perdus = 0 (perte 0%), Dur‚e approximative des boucles en millisecondes :     Minimum = 0ms, Maximum = 2ms, Moyenne = 0ms </strong></p> <p> </p> <p> </p> <p> </p> <h1>II] Mais dans quelle langue est le texte de retour de la commande?</h1> <p> </p> <p><span>Les fenêtres de type console ou invite de commandes, sur les systèmes Microsoft Windows en Europe occidentale, utilisent la page de code 850. C'est une page de code définie par IBM et qui est utilisée en Europe occidentale avec le système DOS et d’autres systèmes de la même époque. </span></p> <p> </p> <p><span>C’est une extension de l’ASCII sur 8 bits, partiellement compatible avec la page de code 437 dont elle est dérivée et qu’elle modifie.  </span></p> <p> </p> <p><span>Plus d'information sur wikipedia </span><a href="http://fr.wikipedia.org/wiki/Page_de_code_850" target="_blank">http://fr.wikipedia.org/wiki/Page_de_code_850</a><span>  </span></p> <p><span> </span></p> <p>Le code page 850 est IBM/<em><strong>OEM</strong></em>/Microsoft Code page</p> <p> </p> <p><span>Pour "traduire", convertir, la chaine de texte de retour de l'invite de commande, <em>string au format OEM</em>, il va falloir utiliser la <span><strong>user32.dll </strong></span>avec la fonction "<strong>OemToChar</strong>", qui permet : cf MSDN : Translates a string from the OEM-defined character set into either an ANSI or a wide-character string  </span></p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/177061_2%20user32%20OEMto%20charA.png" border="0" alt="2 user32 OEMto charA.png"></p> <p> </p> <p>Par exemple sur une commande "ping"</p> <p><img src="https://forums.ni.com/legacyfs/online/177074_texte2.png" border="0" alt="texte2.png"></p> <p> </p> <p> </p> <h1>III] Comment gérer l'erreur retournée par l'invite de commande?</h1> <p>Il faut distinguer l'erreur de la fonction "invite de commande", via le vi LabVIEW "<strong>system Exec.vi</strong>" et l'erreur de la commande système appelée par "l'invite de commande".</p> <p> </p> <p>Le vi LabVIEW ne gére pas, dans le clusteur "standard" Erreur Out, l'erreur retourneé par la fonction "utilisée" dans l'invite de commande.  Il ne <em>gére que l'erreur de la fonction invite de commande.</em></p> <p><em> </em></p> <p>Par contre, la fonction LabVIEW retourne pour la commande utilisée : un indicateur de retour "<strong>code de retour</strong>" et le texte de l'erreur.</p> <p> </p> <p>Pour gérer l'erreur, dans la fonction utilisée, le code va ressembler à cela :</p> <ul> <li>si code 0, pas d'erreur</li> <li>sinon utiliser le vi <span><em><strong>Error Cluster From Error Code.vi </strong></em></span>pour créer une erreur LabVIEW, dans les règles de l'art. Nous allons convertir, via la fonction "<strong>OemToChar</strong>",  le texte de l'erreur de la commande systéme que nous allons ajouter dans le texte de l'erreur LabVIEW.</li> </ul> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/177072_code%20erreur3.png" border="0" alt="code erreur3.png"></p> <p> </p> <p> </p> <h1>IV] Exemple de code</h1> <p> </p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/177068_Luc%20desruelle%20code%20system%20execution%20cmd%20commande%20systemeV2.png" border="0" alt="Luc desruelle code system execution cmd commande systemeV2.png" width="620"></p> <p><em><span>Luc Desruelle </span>| </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><em> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"><span>Voir mon profil</span></span></a></p> <p>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</p> <p> </p> <p><em><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a> , </em><a href="http://about.me/luc_desruelle" target="_blank"><span> About me. </span></a>, <a href="https://plus.google.com/u/0/110429526942091473482/posts" target="_blank"><span> Google+. </span></a> ,<a href="https://twitter.com/DesruelleLuc" target="_blank"><span> Twitter. </span></a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Ex%C3%A9cuter-une-commande-syst%C3%A8me-avec-l-invite-de-commande-sous/ba-p/3473354" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CLD </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <div> <p>Luc Desruelle, Francis Cottet, Michel Pinard</p> <p>Éditeur Dunod / L'Usine Nouvelle - 3ème édition - 464 pages - EAN13 : 9782100724338 - Collection: Technique et Ingénierie,</p> <p>Lien sur le site Amazon : <a href="http://www.amazon.fr/Luc-Desruelle/e/B00VOUMY4A/ref=dp_byline_cont_book_3" target="_blank">http://www.amazon.fr/Luc-Desruelle/e/B00VOUMY4A/ref=dp_byline_cont_book_3</a></p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/188800_Couverture%20livre.jpg" border="0" alt="Couverture livre.jpg" hspace="12" width="193" height="271" align="left">LabVIEW est un environnement de développement graphique particulièrement bien adapté au domaine de l’acquisition, de la mesure et du contrôle/commande. Son approche totalement graphique offre une souplesse et une dimension intuitive inégalée. Comparativement aux langages textuels il offre la même puissance de programmation mais sans le côté abstrait et complexe lié à la syntaxe.</p> <p> </p> <p>Cet ouvrage permet au lecteur de s’initier aux bases puis aux techniques avancées du langage de développement LabVIEW afin de pouvoir réaliser une application dans les règles de l’art.</p> <p> </p> <p>Il est structuré en six chapitres :</p> <p>Les deux premiers sont consacrés à la prise en main de l’outil et la description des éléments de programmation graphique de base, illustrés par des exemples simples.</p> <p> </p> <p>Le troisième chapitre aborde la programmation avancée en LabVIEW en définissant des techniques et architectures permettant au code d’être maintenable, évolutif et performant. Il présente des concepts <span>nécessaire</span>à l'examen CLD (Développeur Certifié LabVIEW).</p> <p> </p> <p>Les trois derniers chapitres abordent les capacités spécifiques de LabVIEW pour l’acquisition, l’analyse et la présentation des données.</p> <p> </p> <p>Des exemples concrets et détaillés permettent d’illustrer les domaines tels que l’acquisition de données, le pilotage d’instruments, les systèmes temps réel & FPGA, le traitement du signal, l’analyse mathématique, la sauvegarde des données et la génération de rapport.</p> <p> </p> <p> </p> <p>Un lien vers un post du forum francophone qui parle de l’examen Certifié LabVIEW développeur (CLD) :</p> <p><a href="https://forums.ni.com/t5/Discussions-au-sujet-de-NI/CLD-pr%C3%A9paration/m-p/3082265/highlight/true#M17130" target="_blank">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/CLD-pr%C3%A9paration/m-p/3082265/highlight/true#M17130</a></p> <p> </p> <p><em>Luc Desruelle | </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif" width="64" height="36"></em></a><em>| <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"></span><span>Voir mon profil</span></a> </em></p> <p><em>CLA : <span>Certified</span> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br><em>CLD : <span>Certified</span> LabVIEW <span>Developer</span>/ Certifié Développeur LabVIEW</em></em></p> <p><em><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a> </em>, <a href="https://twitter.com/DesruelleLuc" target="_blank"><span> Twitter. </span></a></p> </div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Auteur-livre-LabVIEW-quot-Programmation-et-applications-quot/ba-p/3484350" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> La Gestion des erreurs sous LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <h1>I. Définition</h1> <p>La gestion de l'erreur n'est jamais une option mais une obligation. Elle consiste à anticiper, détecter et résoudre les mises en garde et les erreurs. Sans cette gestion, le programme peut avoir un comportement incohérent, mais sans pouvoir en identifier la cause. Par exemple, sans gestion d'erreur, un programme pourrait réaliser une acquisition sur un instrument éteint, et sauvegarder sans problème les données sur un disque dur réseau qui n'existe pas. Un miracle ? Non un calvaire.</p> <p> </p> <p>La structure de la donnée « erreur » au niveau de LabVIEW est un cluster formé des trois éléments suivants (figure 3.22) :</p> <ul> <li>Etat : un booléen qui est à l'état « Vrai » si une erreur s'est produite ;</li> <li>Code, un entier de 32 bits, qui contient le numéro de l'erreur ou « 0 » s'il n'y pas d'erreur. Un code d'erreur différent de zéro avec un état « Faux » signale une mise en garde. Une mise en garde n'empêche pas le code de tourner, mais LabVIEW attire votre attention sur un point qu'il lui semble anormal.</li> <li>Source :<span>une chaîne de caractères identifiant l'endroit où l'erreur s'est produite.</span></li> </ul> <p><img src="https://forums.ni.com/legacyfs/online/194630_erreur_labview.png" border="0" alt="erreur_labview.png" width="620"></p> <p><span>Figure 3.22 - Type de représentation de la donnée « erreur » (cluster) et extraction des différents éléments avec la fonction Désassembler par nom, utilisée dans le « Diagramme ».</span></p> <p><span> </span></p> <p> </p> <h1>II. Comprendre l'origine et la raison de l'erreur</h1> <p>En code source, pour résoudre le problème, il est possible de faire un clic droit sur le bord du cluster d'erreur et de sélectionner Expliquer l'erreur (figure 3.23). Une boîte de dialogue de gestion de l'erreur va s'ouvrir permettant de :</p> <p> </p> <ul> <li>Expliquer l'origine en visualisant le nom du VI qui a généré l'erreur, dans notre exemple « Mon Code Acquisition.vi » ;</li> <li>Proposer une ou des raisons possibles par rapport au code d'erreur, dans notre exemple LabVIEW propose la raison suivante : « La tâche spécifiée n'est pas valide ou n'existe pas », ce qui est le cas.</li> <li>L'origine et la cause permettent en général de comprendre le problème et de le résoudre. Si cela n'est pas le cas, il faut utiliser les outils de débogage, comme les sondes et les points d'arrêts.</li> </ul> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/194631_erreur_labview2.png" border="0" alt="erreur_labview2.png" width="620"></p> <p><span>Figure 3.23 - Comprendre l'origine de l'erreur et la raison pour corriger le problème.</span></p> <h1> </h1> <h1>III. Gestion dans les VIs</h1> <p>Tous les VIs posséderont donc obligatoirement un « cluster d'entrée erreur » et un « cluster de sortie erreur ». Une exception peut être faite concernant les VIs qui ne génèrent aucune erreur. Par exemple, un VI qui réalise le calcul « a²+b² ». Ce calcul est réalisé par des fonctions natives de LabVIEW qui ne génère pas d'erreur, le VI qui réalise ce code ne générera donc pas d'erreur. Cependant, même dans ce cas, il est intéressant d'ajouter à ce VI une entrée et une sortie « cluster d'erreur ». Cette entrée et cette sortie seront directement reliées entre elles. Ce « dispositif » permettra de positionner le VI dans le flux d'erreur global et donc de séquencer le code de la bonne façon.</p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/194632_erreur_labview3.png" border="0" alt="erreur_labview3.png" width="620"></p> <p> </p> <p> </p> <p> </p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="605" valign="top"> <p>Cet article est un ensemble d'extraits du livre « <a href="http://labview.developpez.com/livres/index/?page=Les-meilleurs-livres-LabVIEW#L2100724339" target="_blank"><span>LabVIEW , programmation et applications</span></a> ». <a href="http://www.amazon.fr/exec/obidos/ASIN/2100724339/wwwdeveloppec-21" target="_blank"><span>Retrouvez le livre sur Amazon !</span></a></p> <p><span> </span></p> <p><span><span>Plus d'informations sur la gestion des erreurs avec LabVIEW dans le livre.</span><br></span></p> </td> </tr> </tbody> </table> <p> </p> <p><span><em><span>Luc Desruelle </span>| </em></span><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></span></a><span><em> | </em></span><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"><span>Voir mon profil</span></span></a></p> <p><span><a href="https://forums.ni.com/blogs/Luc_Desruelle/2015/04/21/auteur-livre-labview-programmation-et-applications-%C3%A9dition-dunod" target="_blank">Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CLD</a></span></p> <p><span> </span></p> <p><span><em>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW</em></span><br><span><em>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</em></span></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/La-Gestion-des-erreurs-sous-LabVIEW/ba-p/3486258" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> La Gestion des erreurs sous LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <h1>I. Définition</h1> <p>La gestion de l'erreur n'est jamais une option mais une obligation. Elle consiste à anticiper, détecter et résoudre les mises en garde et les erreurs. Sans cette gestion, le programme peut avoir un comportement incohérent, mais sans pouvoir en identifier la cause. Par exemple, sans gestion d'erreur, un programme pourrait réaliser une acquisition sur un instrument éteint, et sauvegarder sans problème les données sur un disque dur réseau qui n'existe pas. Un miracle ? Non un calvaire.</p> <p> </p> <p>La structure de la donnée « erreur » au niveau de LabVIEW est un cluster formé des trois éléments suivants (figure 3.22) :</p> <ul> <li>Etat : un booléen qui est à l'état « Vrai » si une erreur s'est produite ;</li> <li>Code, un entier de 32 bits, qui contient le numéro de l'erreur ou « 0 » s'il n'y pas d'erreur. Un code d'erreur différent de zéro avec un état « Faux » signale une mise en garde. Une mise en garde n'empêche pas le code de tourner, mais LabVIEW attire votre attention sur un point qu'il lui semble anormal.</li> <li>Source :<span>une chaîne de caractères identifiant l'endroit où l'erreur s'est produite.</span></li> </ul> <p><img src="https://forums.ni.com/legacyfs/online/194630_erreur_labview.png" border="0" alt="erreur_labview.png" width="620"></p> <p><span>Figure 3.22 - Type de représentation de la donnée « erreur » (cluster) et extraction des différents éléments avec la fonction Désassembler par nom, utilisée dans le « Diagramme ».</span></p> <p><span> </span></p> <p> </p> <h1>II. Comprendre l'origine et la raison de l'erreur</h1> <p>En code source, pour résoudre le problème, il est possible de faire un clic droit sur le bord du cluster d'erreur et de sélectionner Expliquer l'erreur (figure 3.23). Une boîte de dialogue de gestion de l'erreur va s'ouvrir permettant de :</p> <p> </p> <ul> <li>Expliquer l'origine en visualisant le nom du VI qui a généré l'erreur, dans notre exemple « Mon Code Acquisition.vi » ;</li> <li>Proposer une ou des raisons possibles par rapport au code d'erreur, dans notre exemple LabVIEW propose la raison suivante : « La tâche spécifiée n'est pas valide ou n'existe pas », ce qui est le cas.</li> <li>L'origine et la cause permettent en général de comprendre le problème et de le résoudre. Si cela n'est pas le cas, il faut utiliser les outils de débogage, comme les sondes et les points d'arrêts.</li> </ul> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/194631_erreur_labview2.png" border="0" alt="erreur_labview2.png" width="620"></p> <p><span>Figure 3.23 - Comprendre l'origine de l'erreur et la raison pour corriger le problème.</span></p> <h1> </h1> <h1>III. Gestion dans les VIs</h1> <p>Tous les VIs posséderont donc obligatoirement un « cluster d'entrée erreur » et un « cluster de sortie erreur ». Une exception peut être faite concernant les VIs qui ne génèrent aucune erreur. Par exemple, un VI qui réalise le calcul « a²+b² ». Ce calcul est réalisé par des fonctions natives de LabVIEW qui ne génère pas d'erreur, le VI qui réalise ce code ne générera donc pas d'erreur. Cependant, même dans ce cas, il est intéressant d'ajouter à ce VI une entrée et une sortie « cluster d'erreur ». Cette entrée et cette sortie seront directement reliées entre elles. Ce « dispositif » permettra de positionner le VI dans le flux d'erreur global et donc de séquencer le code de la bonne façon.</p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/194632_erreur_labview3.png" border="0" alt="erreur_labview3.png" width="620"></p> <p> </p> <p> </p> <p> </p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="605" valign="top"> <p>Cet article est un ensemble d'extraits du livre « <a href="http://labview.developpez.com/livres/index/?page=Les-meilleurs-livres-LabVIEW#L2100724339" target="_blank"><span>LabVIEW , programmation et applications</span></a> ». <a href="http://www.amazon.fr/exec/obidos/ASIN/2100724339/wwwdeveloppec-21" target="_blank"><span>Retrouvez le livre sur Amazon !</span></a></p> <p><span> </span></p> <p><span><span>Plus d'informations sur la gestion des erreurs avec LabVIEW dans le livre.</span><br></span></p> </td> </tr> </tbody> </table> <p> </p> <p><span><em><span>Luc Desruelle </span>| </em></span><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></span></a><span><em> | </em></span><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"><span>Voir mon profil</span></span></a></p> <p><span><a href="https://forums.ni.com/blogs/Luc_Desruelle/2015/04/21/auteur-livre-labview-programmation-et-applications-%C3%A9dition-dunod" target="_blank">Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CLD</a></span></p> <p><span> </span></p> <p><span><em>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW</em></span><br><span><em>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</em></span></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/La-Gestion-des-erreurs-sous-LabVIEW/ba-p/3482373" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Modbus RTU over TCP Master with LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p><span>I have used it successfully to create a Modbus RTU Master or Modbus IP Master or Modus IP Master with a gateway (with unit ID). </span><span>My new goal is to create a Modbus RTU over TCP master : an RTU protocol but an TCP transport.</span></p> <p> </p> <p>plus d'infos sur Modbus avec LabVIEW sur <a href="https://forums.ni.com/blogs/Luc_Desruelle/2013/06/20/modbus-et-labview" target="_blank">https://decibel.ni.com/content/blogs/Luc_Desruelle/2013/06/20/modbus-et-labview</a></p> <p> </p> <p>La nouvelle API Modbus pour NI LabVIEW est vraiment très bien</p> <p><a href="https://forums.ni.com/thread/17712" target="_blank">NI LabVIEW Modbus API Discussion</a></p> <p> </p> <p> </p> <p><span>Pour le "transport" série, il y a le protocole RTU (le plus utilisé) ou ASCII. Le "unit ID" est alors l'adresse de l'appareil sur le bus. Il utilise l'API VISA.</span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/192829_Modbus%20RTU%20Master.png" border="0" alt="Modbus RTU Master.png"></span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/192830_Modbus%20ASCII%20Master.png" border="0" alt="Modbus ASCII Master.png"><br></span></p> <p> </p> <p><span>Pour le « transport » TCP, il y a le protocole TCP. Le « unit ID » n’est alors pas utilisé, sauf lorsqu’il existe une passerelle (Gateway), ou pour activer certaines options sur des automates. Par défaut il n'est pas "cablé" sur le vi "create IP Master", mais il existe un vi dans la palette modbus qui permet de modifier cette configuration.</span></p> <p> </p> <p><span>Il existe un dernier cas, Modbus RTU over TCP. Le protocole RTU mais sur le transport TCP. Avec la nouvelle API, il faut créer son vi « Modbus RTU over TCP master.vi » qui va définir l’utilisation de l’ADU RTU mais via la couche réseau TCP. </span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/192831_Modbus%20over%20TCP%20Create%20Master.png" border="0" alt="Modbus over TCP Create Master.png"></span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/192833_Modbus%20over%20TCP%20Create%20Master%20code.png" border="0" alt="Modbus over TCP Create Master code.png" width="620"></span></p> <p> </p> <p><span>le code devient</span></p> <p><span><img src="https://forums.ni.com/legacyfs/online/192957_create%20Modbus%20RTU%20over%20TCP%20master%20exemple.png" border="0" alt="create Modbus RTU over TCP master exemple.png"><br></span></p> <p> </p> <p><span>plus d'information ici <a href="https://forums.ni.com/message/114904#114904" target="_blank">https://decibel.ni.com/content/message/114904#114904</a></span></p> <p> </p> <p><em><span>Luc Desruelle </span>| </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif"></em></a><em> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"><span>Voir mon profil</span></span></a></p> <p><span><a href="https://forums.ni.com/activision-blogpost/19316" target="_blank">Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CLD</a></span></p> <p><span> </span></p> <p><span><em>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW</em></span><br><span><em>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</em></span></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p><span> </span></p> <p><span> </span></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Modbus-RTU-over-TCP-Master-with-LabVIEW/ba-p/3485904" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> LabVIEW ? Vous avez dit LabVIEW ? Le flux de données? </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <h1> </h1> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="605" valign="top"> <p>Cet article est un ensemble d'extraits du livre « <a href="http://labview.developpez.com/livres/index/?page=Les-meilleurs-livres-LabVIEW#L2100724339" target="_blank"><span>LabVIEW , programmation et applications</span></a> » (3iéme édition).</p> <p><a href="http://www.amazon.fr/exec/obidos/ASIN/2100724339/wwwdeveloppec-21" target="_blank"><span>Retrouvez le livre sur Amazon !</span></a></p> </td> </tr> </tbody> </table> <p> </p> <p>LabVIEW est un environnement de développement complet, graphique, compilé et particulièrement bien adapté au domaine de l'acquisition et de la mesure. Son approche totalement graphique offre une souplesse et une dimension intuitive inégalée. Comparativement aux langages textuels il offre la même puissance de programmation mais sans le côté abstrait et complexe lié à la syntaxe.</p> <p> </p> <p>Orienté tests et mesures, il dispose de nombreuses fonctions permettant de piloter facilement des cartes d'acquisition et autres instruments, mais aussi de filtrer, d'analyser et de présenter les données. Ce langage est également appelé code G. Le code est représenté par un schéma composé de fonctions, de structures et de fils qui propagent les données. L'approche visuelle, l'interface entre le code et le développeur s'opposent sur la forme et la philosophie aux langages textuels, comme le C. LabVIEW est redoutable de puissance et n'a rien à envier aux autres langages.</p> <p> </p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="605" valign="top"> <p><span>Une des différences fondamentales de LabVIEW (par rapport aux langages classiques) est que ce langage suit<span><strong>un modèle de </strong></span></span><span><span><strong>flux de données</strong></span>, et non de flux d'instructions.</span></p> <p> </p> <p><span><strong>Cela signifie que pour un langage textuel ce sont les instructions qui ont la priorité, alors qu'avec LabVIEW ce sont les données.</strong></span></p> <p> </p> <p><span><strong>Une fonction s'exécutera donc à partir du moment où elle dispose à ses entrées de toutes les données dont elle a besoin.</strong></span></p> </td> </tr> </tbody> </table> <p> </p> <p> </p> <p><span>L'exemple suivant, grâce à l'animation, illustre le principe du flux de données. Il réalise un calcul mathématique très simple a x b + c.</span></p> <ol> <li>La fonction « Multiply » s'exécute lorsqu'elle dispose des données à ses entrées (a=1 et b=2), donc dès le départ.</li> <li>La fonction « Add », dispose de l'entrée « c = 3 », mais elle est en attente du résultat de la fonction « Multiply ». Dès que la valeur « 2 » est calculée en sortie de la fonction « Multiply », elle devient disponible pour la fonction « Add » qui va pouvoir être calculée.</li> <li>La fonction, en bas à droite de l'image, permet d'attendre 1 seconde. Il est très important de constater que cette attente s'exécute en même temps que la fonction qui calcule a x b + c.</li> </ol> <p> </p> <table border="0" width="605" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="605" valign="top"> <p><span>Lorsqu'un langage classique est ainsi séquentiel, LabVIEW est naturellement prédisposé au parallélisme. Ce qui augmente encore sa puissance et la rapidité d'exécution du code.</span></p> </td> </tr> </tbody> </table> <p> </p> <p>La fenêtre qui contient le code est appelé le diagramme. Cette notion sera développée par la suite.</p> <p> </p> <p><img src="https://forums.ni.com/legacyfs/online/193119_montage.gif" border="0" alt="montage.gif" width="620"></p> <p> </p> <p> </p> <p> </p> <p>En lisant ce livre, vous pourriez avoir le sentiment que LabVIEW est un outil uniquement dédié à l'acquisition et à la mesure. Certes, il propose un environnement qui facilite grandement cela, et les auteurs de ce livre ont fait délibérément le choix de mettre cette facilité à l'honneur. Mais ne vous y trompez pas, LabVIEW est infiniment plus que cela. C'est un langage à part entière manipulant une grande variété de concepts tels que le flux de données, la programmation objet, la gestion événementielle, l'encapsulation, la modularité, le typage des données, etc. Il peut vous permettre d'implémenter n'importe quel type d'application.</p> <p> </p> <p>En l'utilisant vous pourrez mesurer les données d'un capteur relié à une carte d'acquisition, analyser les informations provenant d'un instrument connecté par une liaison série, réaliser un rapport de test sous Microsoft Office, implémenter un PID sur une cible FPGA, contrôler précisément un procédé physique complexe dans une tâche déterministe sur une cible Temps Réel, trouver par le calcul matricielle la distance de Mahalanobis ... mais également solutionner un Rubik's cube, un Sudoku et même jouer aux échecs (un exemple de jeu d'échecs implémenté en langage G est abordé dans ce livre).</p> <p> </p> <p><em>Luc Desruelle | </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img src="https://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" border="0" alt="avatar_ld.gif" width="64" height="36"></em></span></a><em>| <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" border="0" alt="Voir le profil LinkedIn de Luc Desruelle" width="20" height="15"></span><span>Voir mon prof</span><span>i</span><span><span>l</span></span></a> | </em> <a href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank">Mon blog LabVIEW</a></p> <p><em>CLA : </em><span><em>Certified</em></span><em> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br></em></p> <p><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank">Co-auteur livre LabVIEW : Programmation et applications</a></p> <p><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank">LabVIEW Champion</a></p> <p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p> <p><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=asap_bc?ie=UTF8" target="_blank"><img src="https://ni.i.lithium.com/t5/image/serverpage/image-id/178097iEEEEDCB7BD5B0771/image-size/original?v=lz-1&px=-1" border="0" alt="banniere Luc Livre.png" title="banniere champion.png" align="left"></a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/LabVIEW-Vous-avez-dit-LabVIEW-Le-flux-de-donn%C3%A9es/ba-p/3485940" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Les 10 commandements du développeur LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p>Le développeur LabVIEW devra suivre la synthèse des commandements suivants pour s'assurer que son code est conforme aux règles de développement.</p> <p> </p> <p>1.       Sur un seul écran ton code tiendra.</p> <p>2.       De gauche à droite tu coderas.</p> <p>3.       Les fils tu ne croiseras pas.</p> <p>4.       La gestion de l'erreur tu ne transgressas pas.</p> <p>5.       Le connecteur de type 4x4 toujours tu utiliseras.</p> <p>6.       Les contrôles, indicateurs et sous-VIs judicieux tu nommeras.</p> <p>7.       Le flux de données tu respecteras.</p> <p>8.       Ton code toujours et immédiatement tu documenteras.</p> <p>9.       Des sous-VIs tu feras.</p> <p>10.     La structure séquence empilée tu refuseras.</p> <p> </p> <p> </p> <p><span>Plus d'informations sur les règles de style à respecter avec LabVIEW dans le livre.</span></p> <p> </p> <table border="0" width="605" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="605" valign="top"> <p>Cet article est un ensemble d'extraits du livre « <a href="http://labview.developpez.com/livres/index/?page=Les-meilleurs-livres-LabVIEW#L2100724339" target="_blank"><span>LabVIEW , programmation et applications</span></a> ». <a href="http://www.amazon.fr/exec/obidos/ASIN/2100724339/wwwdeveloppec-21" target="_blank"><span>Retrouvez le livre sur Amazon !</span></a></p> </td> </tr> </tbody> </table> <p> </p> <p><span><a href="http://luc-desruelle.developpez.com/tutoriels/labview/extrait-livre-programmation-application/" target="_blank">http://luc-desruelle.developpez.com/tutoriels/labview/extrait-livre-programmation-application/</a><br></span></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Les-10-commandements-du-d%C3%A9veloppeur-LabVIEW/ba-p/3485946" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Loading XXX into memory causes XXX to be loaded into memory </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p>Quelques règles sur les problèmatiques de temps de chargement des projets. Le texte est une compilation d'informations internet (Pas de moi.)</p> <p>Some rules to reduce project load time. This text is a blog posts compilation. (i'm not the author). Links at the end (LAVA or NI website).</p> <p>  </p> <h1>I] LV project... and VI in memory</h1> <p><a href="https://forums.ni.com/t5/LabVIEW/How-to-reduce-project-load-time/td-p/936487" target="_blank">http://forums.ni.com/t5/LabVIEW/How-to-reduce-project-load-time/td-p/936487</a></p> <p>The project is a list of the files that you included and their locations :</p> <ol> <li><strong>VIs </strong>that are listed by the project are not loaded into memory.</li> <li>All <strong>library files listed in the project are full loaded into memory when the project loads. But...</strong> <ul> <ul> <li>LVClasses and XControls are both types of libraries. These two types <strong>will load all of their member VIs into memory whenever they themselves are loaded into memory.Therefore...</strong></li> <li>A project which loads classes or XControls will -- indirectly -- load all the VIs of those classes or XControls into memory.</li> </ul> </ul> </li> <li> <p>Any VI that is loaded will load all of its subVIs, whether the subVIs are explicitly listed in the project or not.</p> </li> </ol> <p> </p> <h1>II] Loading XXX into memory causes XXX to be loaded into memory or not!</h1> <ul> <li>Loading a vi into memory also causes all (statically) dependent vis to be loaded into memory as well (par exemple le VI Tree). SubVIs are not automatically loaded into memory until the top-level VI is called.</li> <li>Loading a library member (*.vi, *.ctl, etc.) always causes the owning library file (*.lvlib, *.lvclass, etc) to be loaded into memory.</li> <li>Loading a class file (*.lvclass) into memory causes all class members (*.vi, *.ctl, etc.) to be loaded into memory.</li> <li>Loading a project library file (*.lvlib) does <strong>not</strong> cause all library members (*.vi, *.ctl, etc.) to be loaded into memory.</li> <li>Loading a library file (*.lvlib, *.lvclass, etc.) also causes all <em>sub library files (*.lvlib, *.lvclass, etc.) to be loaded as well.</em></li> </ul> <p> </p> <h1>III] To improve the performance</h1> <h2>Put all your VIs and classes into a .llb file</h2> <p>To improve the performance (about LV R&D, Aristos Queue) : Put all your VIs and classes into a .llb file. The .llb optimizes the contents of the file and significantly improves load speed when a block of VIs must load as one.</p> <p><a href="https://lavag.org/topic/14174-extremely-long-load-time-with-lvoop-supanels-and-vi-templates/" target="_blank">https://lavag.org/topic/14174-extremely-long-load-time-with-lvoop-supanels-and-vi-templates/</a></p> <p> </p> <p> </p> <p>The .lvlib is likely having minimal impact on your project load time. The expense is generally from the large number of dependencies that your main VI has.</p> <p> </p> <h2>Move your files to an inner sector of your hard disk.</h2> <p>No, I'm not joking. We have found that hard drives these days are so wide in diameter that location on disk has a massive impact on seek times. Of course, this isn't generally under user control.</p> <p> </p> <h2>Get a solid state drive : SSD</h2> <p>Blazing fast load speeds regardless of what you're working on. Gets rid of the diameter of disk issue.</p> <p> </p> <h2>Save VIs inside .llbs.</h2> <p>The single biggest hit during load is disk seek time, and LLBs solve that by making one file, one file which is optimized for loading the parts of a VI hierarchy. This only helps if you are actually using most or all of the VIs in that LLB.</p> <p> </p> <h2>Turn on "Separate compiled code from source file"</h2> <p>Turn on "Separate compiled code from source file" on all your member VIs and libraries. Makes the VIs you are loading much smaller because the code segment is now in a separate database.</p> <p> </p> <p> </p> <h1>IV] LV project : Is there a performance difference between autopopulated and static folders?</h1> <p>I assume so. I consider autopopulate folders to be way more trouble than they are worth, so I never use them. But every time the project loads it would have to scan the entire directory and rebuild instead of just reading the file, and then any items that are in libraries have to be moved from their place in the autopopulate directory to their place in the library. That could be a lot of work.</p> <p> </p> <p>website links</p> <p>LabVIEW Object-Oriented Programming: The Decisions Behind the Design</p> <p><a href="http://www.ni.com/white-paper/3574/en/" target="_blank">http://www.ni.com/white-paper/3574/en/</a></p> <p><a href="https://forums.ni.com/t5/LabVIEW/How-to-reduce-project-load-time/td-p/936487" target="_blank">http://forums.ni.com/t5/LabVIEW/How-to-reduce-project-load-time/td-p/936487</a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Loading-XXX-into-memory-causes-XXX-to-be-loaded-into-memory/ba-p/3486225" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Aide au développement avec LabVIEW : Contacter un développeur certifié du « Programme Alliance » </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p>Pour une expertise, un audit, une optimisation, une urgence, de l'assistance, un problème critique, un besoin ponctuel ou pour sous-traiter un développement complet sous LabVIEW, nous vous conseillons de faire appel aux <strong>partenaires National Instruments du Programme Alliance. </strong></p> <p>Moi, Luc DESRUELLE, (certifié LabVIEW Architecte, LabVIEW champion, TestStand Développeur, auteur du livre français "LabVIEW" et rédacteur de ce blog), serait ravi de vous apporter mon expertise et mon aide.</p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Aide-au-d%C3%A9veloppement-avec-LabVIEW-Contacter-un-d%C3%A9veloppeur/ba-p/3488049" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> NIDays 2016 - Livre LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 déc. 2016</span> </div> <div class="widgetElement__text"> <p>Retour sur NIDays 2016 : <span>Pour la première fois, lors de cet évènement, un stand était dédié à un libraire. Il a présenté, entre autre, la nouvelle édition du livre « <a href="https://www.amazon.fr/LabVIEW-Programmation-applications-Francis-Cottet/dp/2100724339">LabVIEW : programmation et applications</a> », aux éditions Dunod. </span></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/NIDays-2016-Livre-LabVIEW/ba-p/3488173" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> LabVIEW Champion, Certifié LabVIEW Architecte (CLA) & Développeur (CLD) </div> <div class="widgetElement__contentSubtitle"> <span >04 avr. 2015</span> </div> <div class="widgetElement__text"> <div><p><img __jive_id="188241" align="right" alt="certified_lv_architect_l.jpg" height="232" hspace="12" src="http://forums.ni.com/legacyfs/online/188241_certified_lv_architect_l.jpg" width="319">CLA ou Certifié LabVIEW Architecte (CLA-R pour <span>re</span>-certification) : </p><p><a href="http://sine.ni.com/nips/cds/view/p/lang/fr/nid/13477">http://sine.ni.com/nips/cds/view/p/lang/fr/nid/13477</a></p><p></p><p>• Niveau le plus élevé de certification LabVIEW </p><p>• Démonstration d'une maîtrise de l'architecture et de la gestion de projets des applications LabVIEW </p><p></p><p>La certification <span>Certified</span> LabVIEW Architect est la dernière étape du processus de certification LabVIEW qui en comporte trois (CLAD, CLD et CLA). </p><p></p><p>Ce diplôme obtenu à l’issue d’un processus d’évaluation rigoureux par National Instruments, atteste d’une totale maîtrise de développement en environnement LabVIEW. </p><p></p><p>Des programmeurs <span>Certified</span> Architect peuvent guider et donner des conseils techniques, assurant que les développeurs moins expérimentés respectent de bonnes pratiques, tout en accroissant leurs compétences et leur efficacité. De plus, les programmeurs <span>Certified</span> Architect sont capables de concevoir l'architecture de l'application et de gérer le développement des autres ingénieurs. </p><p></p><p>Je suis CLA : Architect certifié LabVIEW (CLA-R) et CLD : Développeur Certifié LabVIEW (CLD-R)</p><p><img __jive_id="188240" align="left" alt="CLA-R luc desruelle mesulog.png" height="246" hspace="12" src="http://forums.ni.com/legacyfs/online/188240_CLA-R%20luc%20desruelle%20mesulog.png" width="328"><span><img __jive_id="188243" alt="CLD luc desruelle certifie labview developpeur.png" border="0" height="246" src="http://forums.ni.com/legacyfs/online/188243_CLD%20luc%20desruelle%20certifie%20labview%20developpeur.png" width="324"></span></p><p></p><p></p><p><span>je suis également <a _jive_internal="true" href="https://forums.ni.com/groups/labview-champions">LabVIEW Champion</a></span></p><p><span><img alt="LabVIEW champion.png" src="http://forums.ni.com/legacyfs/online/198357_LabVIEW%20champion.png"> </span></p><p><span>A LabVIEW Champion is a top tier, National Instruments Platform enthusiast who has been recognized by National Instruments for their EXCEPTIONAL application development, technical depth and breadth, and leadership and contributions to the LabVIEW community.</span></p><p></p><p><span>A LabVIEW Champion is the first to stand up and defend the NI  Platform, but still has a healthy sense of critical evaluation of the platform, always pushing it to be easier to use and more powerful. The key is our Champions are positive contributors.</span></p><p></p><p><span>LabVIEW Champions are also credible technology experts from around the world who inspire others to learn and grow with LabVIEW through active technical community participation and face-to-face interactions.</span></p><p></p><p><span>LabVIEW Champions are not employees of National Instruments nor do they speak on National Instruments' behalf. LabVIEW Champions are third party individuals who have received recognition from National Instruments for their outstanding contributions to the success of LabVIEW.</span></p><p><span><br></span></p><p><em>Luc Desruelle | </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><span><em><img __jive_id="34586" alt="avatar_ld.gif" border="0" height="36" src="http://forums.ni.com/legacyfs/online/34586_avatar_ld.gif" width="64"></em></span></a><em>| <a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img alt="Voir le profil LinkedIn de Luc Desruelle" border="0" height="15" src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" width="20"></span><span>Voir mon prof</span><span>i</span><span><span>l</span></span></a> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"> </a><a _jive_internal="true" href="https://forums.ni.com/blogs/Luc_Desruelle" target="_blank">Mon blog LabVIEW</a></p><p><em>CLA : </em><span><em>Certified</em></span><em> LabVIEW Architect / Certifié Architecte LabVIEW</em><em><br></em></p><p><a href="http://www.dunod.com/sciences-techniques/sciences-techniques-industrielles/automatique-robotique/ouvrages-professionnels/labview" target="_blank">Co-auteur livre LabVIEW : Programmation et applications</a></p><p><a href="http://decibel.ni.com/content/groups/labview-champions" target="_blank">LabVIEW Champion</a></p><p><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a></p><p><a href="http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=asap_bc?ie=UTF8" target="_blank"><img align="left" alt="banniere Luc Livre.png" border="0" src="http://ni.i.lithium.com/t5/image/serverpage/image-id/178097iEEEEDCB7BD5B0771/image-size/original?v=lz-1&px=-1" title="banniere champion.png"></a></p><p></p><p><span><br></span></p></div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/LabVIEW-Champion-Certifi%C3%A9-LabVIEW-Architecte-CLA-D%C3%A9veloppeur-CLD/ba-p/3483869" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Les fenêtres LabVIEW ne sont pas toutes rectangulaires </div> <div class="widgetElement__contentSubtitle"> <span >13 mars 2014</span> </div> <div class="widgetElement__text"> <h1><span>0] Introduction</span></h1><p>Il existe sur internet plusieurs exemples, très intéressants, de code LabVIEW pour avoir des fenêtres qui ne sont pas rectangulaires.</p><p></p><p><img __jive_id="172422" alt="splash3.png" src="http://forums.ni.com/legacyfs/online/172422_splash3.png"></p><p></p><p>Tous les exemples utilisent le même code, qui permet via la dll Windows "user32.dll" fonction SetLayerdWindowAttributs, de :</p><p>> rendre transparent l'ensemble des pixels d'une couleur spécifiée de la face-avant ;</p><p>> gérer l'opacité de la fenêtre.</p><p></p><p><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633540(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/ms633540(v=vs.85).aspx</a></p><p></p><p>L'intérêt est :</p><ol><li><strong>principalement </strong>esthétiquepour les spash screen, Cf Wikipédia : la toute première fenêtre affichée par un logiciel. Cette fenêtre incite l'utilisateur à patienter pendant le chargement et l'installation d'un logiciel tout en lui apportant diverses informations comme le nom du logiciel, le nom de l'éditeur, le logo de l'éditeur ou du logiciel, les droits d'auteur associés au logiciel, la version et l'état du chargement du logiciel.</li><li>insérer des fenêtres "particulières"</li><li>opacité, afin de permettre une comparaison par superposition de plusieurs fenêtres</li></ol><p></p><p></p><p>Je vais montrer un exemple avec ma photo suivante </p><p><img __jive_id="172314" alt="Capture5.PNG" src="http://forums.ni.com/legacyfs/online/172314_Capture5.PNG"></p><p></p><div> </div><p></p><h1>I] Certains codes incomplets </h1><p><span>Certains exemples sont incomplets, car ils ne fonctionnent qu’avec des « jeux » de couleurs particuliers. </span></p><p><span>Le problème provient de la différence de gestion des couleurs entre LabVIEW et Microsoft : RGB VS BGR >>> COLORREF value has the following hexadecimal form : 0x bbggrr</span></p><p></p><p><span>Par exemple </span><a href="http://forums.ni.com/t5/LabVIEW/Darren-s-Weekly-Nugget-04-17-2006/m-p/352929?view=by_date_ascending#M179807"><span>http://forums.ni.com/t5/LabVIEW/Darren-s-Weekly-Nugget-04-17-2006/m-p/352929?view=by_date_ascending#M179807</span></a></p><p><span>ou le très bon post de </span><span><a href="http://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CDEQFjAA&url=http%3A%2F%2Fforums.ni.com%2Ft5%2FDiscussions-au-sujet-de-NI%2FLes-micro-nuggets-%25C3%25A0-la-Fran%25C3%25A7aise%2Ftd-p%2F1326679%2Fpage%2F2&ei=LdggU_LBEuS60wX_5YHoCw&usg=AFQjCNEnz6ADvjDmSLKd_hwXGTQoj3DB6g&sig2=v_T--By3cmUn0BhfknjcgQ">DaHelmut</a></span></p><p></p><p></p><p></p><p><img __jive_id="172308" alt="1 erreur.PNG" src="http://forums.ni.com/legacyfs/online/172308_1%20erreur.PNG" width="620"></p><p></p><p></p><h1><span>II] Rendre Transparent <span>Des Pixels - </span>Fonction Set Window Color To Transparent</span></h1><p><span>D’autres exemples sont très complets, et fonctionnent avec toutes les couleurs, car ils convertissent la couleur RGB de LabVIEW en BGR pour Windows</span></p><p></p><p><span>Par exemple une référence : </span><a _jive_internal="true" href="https://forums.ni.com/blogs/labviewramblings/2013/11/30/groovy-splash-screen"><span>https://decibel.ni.com/content/blogs/labviewramblings/2013/11/30/groovy-splash-screen</span></a></p><p></p><p>Je ne sais pas qui est la première personne à avoir réalisé le code. J'ai réalisé un vi modifié, avec la documentation du code et en intégrant directement le Get Window Handle.vi </p><p><img __jive_id="172309" alt="Set Window Color to Transparent.png" src="http://forums.ni.com/legacyfs/online/172309_Set%20Window%20Color%20to%20Transparent.png" width="620"></p><p></p><p></p><p>Pour utiliser le code il faut ouvrir la référence du vi via <img __jive_id="172310" alt="Capture.PNG" src="http://forums.ni.com/legacyfs/online/172310_Capture.PNG"> puis <img __jive_id="172312" alt="Capture3.PNG" src="http://forums.ni.com/legacyfs/online/172312_Capture3.PNG"></p><p>par exemple <img __jive_id="172311" alt="Capture2.PNG" src="http://forums.ni.com/legacyfs/online/172311_Capture2.PNG" width="620"></p><p></p><p>La fenêtre est alors transparente mais ... avec une bordure!</p><p></p><p></p><p></p><div> </div><p></p><p></p><p><span><img __jive_id="172313" alt="Capture4.PNG" src="http://forums.ni.com/legacyfs/online/172313_Capture4.PNG"></span></p><p></p><h1><span>III] Une fenêtre sans bordure</span></h1><p><span>La transparence ne va pas suffir. En effet la fenêtre a encore la bordure. </span><span>Il faut modifier les options de la fenêtre p</span><span>our avoir</span></p><p><span><img __jive_id="172316" alt="Capture7.PNG" src="http://forums.ni.com/legacyfs/online/172316_Capture7.PNG" width="620"></span></p><p></p><p><span>devient <img __jive_id="172317" alt="Capture8.PNG" src="http://forums.ni.com/legacyfs/online/172317_Capture8.PNG"></span></p><p></p><p><span>La fenêtre n'est plus rectangulaire! Mais n'est plus une fenêtre, car comment la fermer?</span></p><p></p><p><span>IV] Fermer la fenêtre sans bordure</span></p><p><span>il faut ajouter un bouton "croix" pour fermer... <img __jive_id="172321" alt="Sans titre.png" src="http://forums.ni.com/legacyfs/online/172321_Sans%20titre.png"></span></p><p></p><p><span><img __jive_id="172320" alt="Image2.png" src="http://forums.ni.com/legacyfs/online/172320_Image2.png" width="620"></span></p><p></p><p><span>Toutes les formes sont possibles.</span></p><p></p><p><span>Même un "Petit poisson" voir le code en PJ</span></p><p><span><img __jive_id="172322" alt="Capture11.PNG" src="http://forums.ni.com/legacyfs/online/172322_Capture11.PNG"><img __jive_id="172323" alt="Capture12.PNG" src="http://forums.ni.com/legacyfs/online/172323_Capture12.PNG"></span></p><p><em><span>Luc Desruelle </span>| </em><a href="https://decibel.ni.com/servlet/JiveServlet/downloadImage/102-25020-3-34586/avatar_ld.gif" target="_blank"><em><img __jive_id="34586" alt="avatar_ld.gif" src="http://forums.ni.com/legacyfs/online/34586_avatar_ld.gif"></em></a><em> | </em><a href="http://fr.linkedin.com/in/labviewcertifiedeveloppeur" target="_blank"><span><img alt="Voir le profil LinkedIn de Luc Desruelle" border="0" height="15" src="https://ip1.i.lithium.com/6260c91e69ba19bbbd69614442f3f962e8bd5755/687474703a2f2f732e632e6c6e6b642e6c6963646e2e636f6d2f736364732f636f6d6d6f6e2f752f696d672f77656270726f6d6f2f62746e5f696e5f32307831352e706e67" width="20"><span>Voir mon profil</span></span></a> </p><p>CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW<br>CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW</p><p></p><p><em><a href="mailto:luc.desruelle@gmail.com" target="_blank">Contact</a> , </em><a href="http://about.me/luc_desruelle"><span> About me. </span></a>, <a></a><a href="https://plus.google.com/u/0/110429526942091473482/posts"><span> Google+. </span></a> ,<a></a><a href="https://twitter.com/DesruelleLuc"><span> Twitter. </span></a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Les-fen%C3%AAtres-LabVIEW-ne-sont-pas-toutes-rectangulaires/ba-p/3473285" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Toolkit d'algorithmes prédictifs et de détection, match pattern avec LabVIEW </div> <div class="widgetElement__contentSubtitle"> <span >05 févr. 2014</span> </div> <div class="widgetElement__text"> <h1><span>1 Watchdog Agent™ Prognostics Toolkit for LabVIEW - IMS Center</span></h1><p></p><p><span lang="EN-GB"><a href="http://sine.ni.com/ds/app/doc/p/id/ds-373/lang/fr"><span>http://sine.ni.com/ds/app/doc/p/id/ds-373/lang/fr</span></a></span></p><p><span lang="EN-GB"><a href="http://sine.ni.com/nips/cds/view/p/lang/fr/nid/210191"><span>http://sine.ni.com/nips/cds/view/p/lang/fr/nid/210191</span></a></span></p><p><span lang="EN-GB"><a href="http://www.imscenter.net/"><span>http://www.imscenter.net/</span></a></span></p><p><span lang="EN-GB"></span></p><p>Toolkit d'algorithmes prédictifs et de détection</p><li>Ajout de réseaux de neurones artificiels, de modèles de mélange gaussien et de reconnaissance de modèles statistiques à NI LabVIEW</li><li>Présentation affinée des données avec des cartes auto adaptatives et des graphes déroulants de surveillance conditionnelle</li><li>Idéal pour les applications de surveillance de machines</li><p></p><p></p><h1>2 LabVIEW Machine Learning Toolkit</h1><p><a _jive_internal="true" href="https://forums.ni.com/docs/DOC-19328">https://decibel.ni.com/content/docs/DOC-19328</a></p><p></p><p><a _jive_internal="true" href="https://forums.ni.com/thread/10970">https://decibel.ni.com/content/thread/10970</a></p><p>The idea of machine learning is to mimic the learning process of human beings, i.e., gaining knowledge through experience. Machine learning algorithms allow machines to generalize rules from empirical data, and, based on the learned rules, make predictions for future data. The Machine Learning Toolkit (MLT) provides various machine learning algorithms in LabVIEW. It is a powerful tool for problems such as visualization of high-dimensional data, pattern recognition, function regression and cluster identification.</p><p></p><p></p><p></p><h1>3 Toolkit CURE Pattern ID : Neural ID </h1><p><a href="http://www.ni.com/white-paper/12420/en/">http://www.ni.com/white-paper/12420/en/</a></p><p><a href="http://sine.ni.com/nips/cds/view/p/lang/fr/nid/209033">http://sine.ni.com/nips/cds/view/p/lang/fr/nid/209033</a></p><p></p><p></p><div></div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Toolkit-d-algorithmes-pr%C3%A9dictifs-et-de-d%C3%A9tection-match-pattern/ba-p/3488437" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Comment convertir un VI pour une version différente de LabVIEW? </div> <div class="widgetElement__contentSubtitle"> <span >18 juin 2013</span> </div> <div class="widgetElement__text"> <p><a href="http://digital.ni.com/public.nsf/allkb/B49A4599DA6D2C4A8625754B005FF2BB">http://digital.ni.com/public.nsf/allkb/B49A4599DA6D2C4A8625754B005FF2BB</a></p><p><img __jive_id="103416" alt="KB_LVversions_Fr.png" src="http://forums.ni.com/legacyfs/online/103416_KB_LVversions_Fr.png"></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Comment-convertir-un-VI-pour-une-version-diff%C3%A9rente-de-LabVIEW/ba-p/3485323" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> NI LabVIEW Instrument Driver Development Studio </div> <div class="widgetElement__contentSubtitle"> <span >05 juin 2013</span> </div> <div class="widgetElement__text"> <p>pour réaliser des driver LabVIEW (a tester...)</p><p></p><p><a href="https://forums.ni.com/docs/DOC-20135">NI LabVIEW Instrument Driver Development Studio 1.1</a> :  Speed up development time when creating new LabVIEW instrument drivers by building on functional SCPI command templates for common instrument types + Develop consistent instrument drivers by loading the source from an existing driver  as a starting point</p><p></p><div></div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/NI-LabVIEW-Instrument-Driver-Development-Studio/ba-p/3484986" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Serveur web : visualiser deux faces-avant dans un navigateur </div> <div class="widgetElement__contentSubtitle"> <span >29 mai 2013</span> </div> <div class="widgetElement__text"> <p><a href="http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Visualisation-de-la-face-avant-distante-d-un-executable/m-p/2443080/highlight/false#M7559">http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Visualisation-de-la-face-avant-distante-d-un-executable/m-p/2443080/highlight/false#M7559</a></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Serveur-web-visualiser-deux-faces-avant-dans-un-navigateur/ba-p/3484892" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Utilisation du contrôle de source (pour LabVIEW et autres...) </div> <div class="widgetElement__contentSubtitle"> <span >18 mai 2013</span> </div> <div class="widgetElement__text"> <h1>Utilisation de SVN avec un exemple LabVIEW</h1><p>Turtle Doves - Tortoise SVN</p><p><a _jive_internal="true" href="https://forums.ni.com/docs/DOC-25666">https://decibel.ni.com/content/docs/DOC-25666</a></p><p></p><h1>Wikipedia</h1><p><a href="http://fr.wikipedia.org/wiki/Apache_Subversion">http://fr.wikipedia.org/wiki/Apache_Subversion</a></p><p></p><h1>TortoiseSVN</h1><p><a href="http://fr.wikipedia.org/wiki/TortoiseSVN">http://fr.wikipedia.org/wiki/TortoiseSVN</a></p><div></div> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Utilisation-du-contr%C3%B4le-de-source-pour-LabVIEW-et-autres/ba-p/3484774" target="_blank"> En savoir + </a> </div> </div> <div class="widgetElement"> <div class="widgetElement__title"> Download the NI Power Electronics Design Guide and Evaluation Software </div> <div class="widgetElement__contentSubtitle"> <span >18 mai 2013</span> </div> <div class="widgetElement__text"> <p><strong><br></strong><span><a href="https://lumen.ni.com/nicif/us/codepowelecguide/content.xhtml"><span>Download the Latest Power Electronics Design Guide </span></a></span></p><p></p><p><a _jive_internal="true" href="https://forums.ni.com/docs/DOC-19212">Design Guide to Power Electronics Co-Simulation with Multisim and LabVIEW</a></p><p></p><p><span><strong><a _jive_internal="true" href="https://forums.ni.com/message/33994#33994">NI Ultiboard and NI Multisim</a></strong></span></p> </div> <div class="widgetElement__text"> <a class="widgetElement_knowMore" href="https://forums.ni.com/t5/luc-desruelle-s-Blogue/Download-the-NI-Power-Electronics-Design-Guide-and-Evaluation/ba-p/3484753" target="_blank"> En savoir + </a> </div> </div> </div> </div> </div> </div> <div class="footer"> <div class="footer__content"> <div class="widget widget_share" > <span class="share__title">Partager ce CV sur :</span> <a class="shareItem shareItem_twitter" href="https://www.doyoubuzz.com/luc-desruelle/cv/share/twitter">twitter</a> <a class="shareItem shareItem_facebook" href="https://www.doyoubuzz.com/luc-desruelle/cv/share/facebook">facebook</a> <a class="shareItem shareItem_linkedin" href="https://www.doyoubuzz.com/luc-desruelle/cv/share/linkedin">linkedin</a> <a class="shareItem shareItem_viadeo" href="https://www.doyoubuzz.com/luc-desruelle/cv/share/viadeo">viadeo</a> </div> <span incentive-element="dybFooterIncentive" class="dybIncentive" > <a href="/fr/"> CV créé sur <img src="/bundles/dyb/images/Cv/doyoubuzz.png" alt="DoYouBuzz"> </a> </span> </div> </div> <script src="/bundles/dyb/assets/js/cv/view.js?v=5.2.51"></script> </div> <div class="widget widget_proofreading" > <div data-dyb-suggestion-panel></div> <script> var cookieNameReg = "proofreadingAuth\\[646161\\]"; var cvInfos = { id: 646161, url: "https://www.doyoubuzz.com/luc-desruelle/cv" } if (document.cookie.match(cookieNameReg)) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.href = "/bundles/dyb/assets/css/app/Cv/Proofreading/proofreading.css"; document.getElementsByTagName("head")[0].appendChild(link); require(["angular", "cv/proofreading/application"], function (angular, module) { module.value("cvId", cvInfos.id); module.value("cvInfos", cvInfos); angular.bootstrap(document, [module.name]); }); } </script> </div> <script> (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); }()); var _gaq = _gaq || [], trackingParam = { dyb: { trackedUrl: null, memberType: 'visitor' }, stats: { trackedUrl: null } }; _gaq.push( ['_setAccount', 'UA-4431557-1'], ['_trackPageview'], ['dyb._setAccount', 'UA-4431557-4'], ['dyb._setDomainName', 'none'], ['dyb._setAllowLinker', true] ,['stats._setAccount', 'UA-4431557-6'] ); trackingParam.dyb.trackedUrl = '/visitor/cv/blogs/list'; trackingParam.dyb.cvType = 'free'; trackingParam.stats.trackedUrl = '/cv/luc-desruelle/1458989880'; if (trackingParam.dyb.cvType) { _gaq.push(['dyb._setCustomVar', 1, "Cv_type", trackingParam.dyb.cvType, 3]); } if (trackingParam.dyb.locale) { _gaq.push(['dyb._setCustomVar', 2, "Locale", trackingParam.dyb.locale, 3]); } _gaq.push(['dyb._trackPageview', trackingParam.dyb.trackedUrl]); if (!trackingParam.stats.blockStatsTracking && trackingParam.stats.trackedUrl) { _gaq.push(['stats._trackPageview', trackingParam.stats.trackedUrl]); } </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"77627f5098","applicationID":"3254398","transactionName":"Y1NQNUAFVhEEVRJbCloZcRRBEFcPSlUQbQZVQlcGXRZB","queueTime":0,"applicationTime":3111,"atts":"TxRTQwgfRR8=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>