luc desruelle's Blogue

Navigateur communautaire
annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Pilotage d'une application LabVIEW depuis une autre application LabVIEW

Desruelle_luc
Trusted Enthusiast

VI Server entre 2 exécutables LabVIEW ou Get Access To A Running Executable From  Executable 

Comment piloter "simplement' une application LabVIEW, depuis une autre application LabVIEW? éventuellement depuis le réseau, entre 2 ordinateurs? et aussi simplement que si le code était dans une seule application?

 

L’idée est de piloter des fonctionnalités du VI Server contenues dans un exécutable depuis un autre exécutable. Sous LabVIEW il est possible de faire communiquer « facilement » deux exécutables en utilisant le VI Server en accès distant, ou remote.

 

Avant de commencer, un retour sur la définition du VI Server (source site de NI) : VI Server is a set of functions that allows you to dynamically control front panel objects, VIs, and the LabVIEW environment. With VI Server, you can also programmatically load and run VIs in LabVIEW either on the same machine or across a network. 
VI Server has an object-oriented architecture that is platform-independent.  Each object that is a part of VI Server is a part of a class. The class that the object is a part of determines what properties and methods are available. Many of these classes have sub-classes. For instance, any boolean control is a member of the Boolean class, which is a member of the Control class. The Control class is a member of the GObject class, which is a member of the Generic class. Lower level classes, such as the Boolean class, have their own properties and methods, and inherit properties and methods from higher level classes, such as the Generic class.

 

Exemple d'un code pour piloter une application "RemoteHMI.exe"

Dans l’exécutable à piloter "RemoteHMI.exe", il faut activer le serveur TCP et le port de communication (par exemple le 11112), via le fichier ini de l’applicatif dans la section du RunTime LabVIEW

 

 

 

 

[RemoteHMI]
server.tcp.enabled=True
server.tcp.port=11112

 

 

 

évidement la section qui transmet les informations au RunTime LabVIEW doit contenir [NomDeMonApplication] pour NomDeMonApplication.exe

 

Il est également possible d'activer le serveur TCP par programmation, même si je n'aime pas trop cette méthode. L'exemple suivant, sur le site de NI, permet d'activer le port d'écoute en 3365, activer le serveur TCP et autoriser l'accès en localhost uniquement.

VI server programmation.png

cette méthode est décrite sur le site de NI à l'URL Get Access To A Running Executable From Another VI or Executable Through VI Server 

 

 

Cela permet d’avoir accès à toutes les fonctions du VI server à distance, comme si nous étions dans le même exécutable

 

Desruelle_luc_0-1628762805748.png

 

Cette fonctionnalité est très utile pour piloter un système depuis un autre exécutable, et ainsi séparer la partie commande de la partie pilotage.

 

cette fonctionnalité me permet de piloter une application développée sous NI LabVIEW à partir de codes modules sous NI TestStand, et ainsi automatiser une séquence de test.

 

exemple d'un code Remote.vi

Remote Application.png

 

 

exemple d'un code Client

Client Application.png

 

banniere Luc Livre NXG Champion.png

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