Ouvrir une référence de VI (fonction)

Aide LabVIEW 2014

Date d'édition : June 2014

Numéro de référence : 371361L-0114

»Afficher les infos sur le produit
Télécharger l'aide (Windows uniquement)

Palette propriétaire : VIs et fonctions de contrôle d'applications

Requiert : Système de développement de base

Renvoie une référence à une commande personnalisée, une variable globale ou un VI spécifié par une chaîne de nom ou un chemin indiquant l'emplacement du VI sur le disque.

Détails  Exemples

spécificateur de type du refnum de VI (pour type seulement) détermine les informations sur le connecteur et le type de données de référence au VI. LabVIEW ignore la valeur réelle de cette entrée. Par défaut, la fonction renvoie une référence à un VI générique.

Si vous voulez utiliser la sortie référence au VI de cette fonction avec le nœud Appeler par référence ou le nœud Démarrer un appel asynchrone, vous devez câbler une référence de VI de type strict à cette entrée.

Si vous câblez une référence de VI de type strict à cette entrée, le connecteur du VI spécifié par chemin du VI doit correspondre à celui de cette entrée.
référence d'application est une référence à l'instance d'application LabVIEW. Par défaut, LabVIEW utilise l'instance d'application du VI appelant. Vous pouvez obtenir des références à d'autres instances d'application avec la fonction Ouvrir une référence d'application. Si vous câblez une référence à une autre instance d'application à l'entrée référence d'application, chemin du VI fait référence à un emplacement du système de fichiers de l'ordinateur qui exécute l'instance d'application.
chemin du VI accepte une chaîne contenant le nom ou le chemin du VI à référencer. Si vous câblez une chaîne contenant un nom, elle doit correspondre au nom délimité complet d'un VI en mémoire sur cette cible. Si vous câblez un chemin, LabVIEW recherche en mémoire un VI que vous avez chargé auparavant depuis ce chemin sur la même cible. Si un VI correspondant est introuvable dans la mémoire, LabVIEW tente de le charger à partir de ce fichier sur le disque. Une erreur survient si LabVIEW ne parvient pas à trouver le fichier, ou si le fichier crée un conflit avec un autre VI en mémoire.

Si le chemin est relatif, le VI considère que le chemin est relatif au VI appelant ou, si le VI appelant n'a pas été enregistré, au répertoire de l'application.
Remarque  Si vous spécifiez une instance d'application distante dans référence d'application, le chemin est interprété sur la machine distante dans le contexte du système de fichiers distant. Le chemin est exprimé en utilisant les séparateurs de chemin de l'ordinateur local, mais il est converti pour utiliser les séparateurs de chemin de l'ordinateur distant quand la requête parvient à ce dernier.

Par exemple, pour faire référence à un VI sous un système d'exploitation OS X (32 bits) à My HD:LabVIEW VIs:foo.vi à partir d'une application Windows, utilisez le chemin My HD:\LabVIEW VIs\foo.vi. Inversement, pour faire référence à un VI situé à C:\labview\foo.vi sur un ordinateur exécutant Windows à partir d'une application OS X (32 bits), câblez le chemin C:labview:foo.vi.
Si vous câblez un chemin, LabVIEW attend que l'interface utilisateur soit inactive pour charger le VI du disque. Si vous câblez une chaîne de nom, LabVIEW n'a pas besoin d'attendre que l'interface utilisateur soit inactive puisqu'il ne charge pas le VI du disque. LabVIEW ne recherche la mémoire que pour un VI dont le nom est spécifié.
Remarque  LabVIEW ne supporte pas l'ouverture d'une référence à un VI clone avec la fonction Ouvrir une référence de VI. L'utilisation de cette fonction pour ouvrir une référence à un VI clone peut provoquer un crash de LabVIEW.
options détermine les caractéristiques du VI référencé par référence au VI, y compris si le VI peut être appelé de manière asynchrone. La valeur par défaut est 0x0. Créez des options en combinant un sous-ensemble des marqueurs d'option suivants.
Marqueur d'optionDescription
0x01Indiquer les modifications — Utilisez ce marqueur d'option si vous voulez qu'un astérisque (*) apparaisse à côté du titre du VI lorsque des changements ont été effectués avec le VI Serveur. Le VI doit être en mode d'édition pour que LabVIEW puisse enregistrer les modifications.
0x02Ouvrir des modèles pour les éditer — Utilisez ce marqueur d'option pour ouvrir le fichier .vit d'origine. Si vous ne sélectionnez pas ce marqueur d'option, LabVIEW ouvre une nouvelle instance du VI modèle. Les modifications apportées à une instance n'ont pas d'effet sur le fichier .vit d'origine. Ce marqueur d'option n'a pas d'effet sur les fichiers qui ne sont pas des fichiers de modèles.
0x04Inviter l'utilisateur à enregistrer — Utilisez ce marqueur d'option pour inviter l'utilisateur à enregistrer les modifications lorsque cette référence au VI se ferme si toutes les conditions suivantes sont vraies :
  • Le VI référencé ou ses sous-VIs contiennent des modifications non enregistrées.
  • Aucune autre référence au VI référencé n'est ouverte.
  • Le VI référencé est capable de quitter la mémoire. Pour qu'un VI puisse quitter la mémoire, par exemple, aucun autre VI ne doit faire appel à lui, sa face-avant doit être fermée et il ne peut pas faire partie d'une bibliothèque de projet ouverte.
0x08Préparer à une exécution réentrante — Utilisez ce marqueur d'option si vous voulez utiliser la méthode Exécuter le VI pour exécuter en parallèle plusieurs instances d'un VI cible réentrant. Lorsque ce marqueur d'option est défini, LabVIEW alloue un espace de données parallèle dédié dans lequel un clone du VI cible peut s'exécuter. Sans ce marqueur d'option, la fonction Ouvrir une référence de VI renvoie toujours une référence au même espace de données du VI cible d'origine, ce qui empêche d'exécuter simultanément plusieurs appels au VI. LabVIEW renvoie l'erreur 1096 si le VI cible n'est pas réentrant. Reportez-vous à la LLB runvi.llb pour voir un exemple d'utilisation de ce marqueur d'option.
Astuce  Utilisez le nœud Démarrer un appel asynchrone au lieu de la méthode Exécuter le VI pour exécuter des VIs cibles simultanément. En plus d'une interface simplifiée et d'une amélioration des performances, le nœud Démarrer un appel asynchrone vous permet aussi de recueillir les sorties du VI cible avec un nœud Attendre un appel asynchrone correspondant. Reportez-vous à la LLB TCPDateServerUsingStartAsynchronousCall.llb pour voir une autre implémentation de l'exemple LLB runvi.
0x10Inviter à rechercher les sous-VIs manquants — Utilisez ce marqueur d'option pour inviter l'utilisateur à autoriser LabVIEW à rechercher les sous-VIs manquants du VI référencé.
0x20Masquer la boîte de dialogue de chargement — Empêche LabVIEW d'afficher la boîte de dialogue de chargement lors de la recherche des sous-VIs manquants du VI référencé.
Remarque  Ce marqueur d'option n'affecte pas le fait que LabVIEW vous invite ou non à rechercher les VIs manquants.
0x40Activer les appels simultanés sur les VIs réentrants — Utilisez ce marqueur d'option si vous voulez utiliser plusieurs nœuds Appeler par référence ou Démarrer un appel asynchrone pour exécuter les clones d'un VI cible réentrant en parallèle, comme lorsque vous utilisez ces nœuds dans une boucle For à itérations de boucle en parallèle. Ce marqueur d'option permet une exécution en parallèle car elle donne à chaque nœud Appeler par référence accès aux espaces de données des VIs clones. Si vous n'utilisez pas ce marqueur d'option, les appels au même VI cible s'exécutent un par un car ils doivent attendre de pouvoir accéder au même espace de données. Reportez-vous au VI Appel asynchrone et collecte (avec l'option 0x40) pour voir un exemple d'utilisation de ce marqueur d'option.

Le marqueur d'option 0x40 n'est valide que dans les cas suivants :
  • Le VI cible est réentrant et partage des clones.
  • Le VI cible est réentrant, et vous incluez aussi le marqueur d'option 0x80 ou 0x100.
Remarque  LabVIEW renvoie l'erreur 1591 si le marqueur d'option 0x40 n'est pas valide pour la cible ou les autres marqueurs d'option inclus.
0x80Préparer à appeler et oublier — Utilisez ce marqueur d'option si vous voulez appeler un VI cible de manière asynchrone avec le nœud Démarrer un appel asynchrone mais que vous n'avez pas besoin de savoir quand le VI finit de s'exécuter ou ce qu'il renvoie. N'utilisez pas ce marqueur d'option avec 0x08 ou 0x100. Reportez-vous au VI Appeler et oublier asynchrone pour voir un exemple d'utilisation de cette option.
Remarque  LabVIEW renvoie l'erreur 1578 si vous utilisez ce marqueur d'option avec une référence à un VI distant.
0x100Préparer pour appeler et collecter — Utilisez ce marqueur d'option si vous voulez recueillir les résultats d'un appel asynchrone à un VI cible avec le nœud Attendre un appel asynchrone. Si vous utilisez ce marqueur d'option, vous devez inclure un nœud Attendre un appel asynchrone pour chaque appel que vous lancez avec un nœud Démarrer un appel asynchrone pour assurer que LabVIEW ne conserve pas indéfiniment en mémoire les appels démarrés. N'utilisez pas ce marqueur d'option avec 0x08 ou 0x100. Reportez-vous au VI Appeler et collecter asynchrone pour voir un exemple d'utilisation de cette option.
Remarque  LabVIEW renvoie l'erreur 1578 si vous utilisez cette option avec une référence à un VI distant.
entrée d'erreur décrit les erreurs survenues avant l'exécution de ce nœud. Cette entrée fournit la fonctionnalité entrée d'erreur standard.
mot de passe est le mot de passe du VI dont vous voulez ouvrir la référence. Câblez un mot de passe à cette entrée si vous voulez éditer un VI cible protégé par mot de passe. Si vous câblez le bon mot de passe, la fonction renvoie une référence authentifiée au VI. Si vous câblez un mot de passe incorrect à cette entrée, la fonction renvoie une erreur et une référence de VI non valide. LabVIEW ignore cette entrée si le VI cible n'est pas protégé par mot de passe. Si vous ne câblez pas de mot de passe à cette entrée et que le VI cible est protégé par mot de passe, la fonction Ouvrir une référence de VI renvoie une référence valide, mais vous ne pouvez pas utiliser cette référence pour éditer le VI.
Remarque  Vous pouvez aussi utiliser une référence de VI Serveur pour obtenir une référence authentifiée à un VI.
référence au VI est le refnum associé au VI demandé. Si la fonction échoue, référence au VI renvoie Pas un refnum.
sortie d'erreur contient des informations sur l'erreur. Cette sortie fournit la fonctionnalité sortie d'erreur standard.

Détails sur Ouvrir une référence de VI

La fonction Ouvrir une référence de VI prépare une référence de VI pour des appels dynamiques par le nœud Appeler par référence, le nœud Démarrer un appel asynchrone ou le nœud Attendre un appel asynchrone. Utilisez le spécificateur de type du refnum de VI (pour type seulement) et les entrées options pour préparer une référence pour son exécution dynamique.

Ouverture de références pour des appels de VI dynamiques

Si vous voulez appeler de manière dynamique le VI spécifié avec le nœud Appeler par référence ou le nœud Démarrer un appel asynchrone, vous devez utiliser des données appropriées pour les paramètres suivants :

  • spécificateur de type du refnum de VI (pour type seulement) — Câblez une référence de VI de type strict à cette entrée.
  • options — Déterminez si les marqueurs d'option 0x08, 0x40, 0x80 et 0x100 s'appliquent à la façon dont vous voulez appeler le VI référencé.

Critères pour ouvrir des références de type strict

Si vous câblez une référence de VI de type strict au spécificateur de type du refnum de VI (pour type seulement), le VI spécifié par chemin du VI doit répondre aux critères suivants :

  • Le VI ne peut pas être brisé.
  • Le VI ne peut pas être actif comme VI de niveau principal, à moins qu'il ne soit un VI réentrant.
  • Le connecteur du VI doit correspondre à celui du spécificateur de type du refnum de VI (pour type seulement).

Ouverture de références à des VIs réentrants

Si vous ouvrez une référence à un VI réentrant, tenez compte des détails suivants :
  • Les appels dynamiques à des VIs cibles réentrants s'exécutent en série, à moins que vous ne spécifiez 0x40 comme l'une des options.
  • Si vous utilisez le marqueur d'option 0x40 pour exécuter les instances d'un VI cible réentrant en parallèle, référence au VI fait référence au VI cible plutôt qu'à un de ses clones. Cependant, le nœud Appeler par référence et le nœud Démarrer un appel asynchrone appellent tous deux un clone du VI cible. Par conséquent, si vous appelez une propriété ou une méthode VI Serveur sur référence au VI, la propriété ou la méthode n'aura pas d'effet sur les VIs clones appelés par ces nœuds.
  • La fonction Égaux ? renvoie toujours VRAI si vous comparez deux références au même VI réentrant. Pour déterminer si les références font référence à la même instance du VI réentrant, utilisez la fonction Adapter le type pour convertir les références en entiers signés 32 bits. Ensuite, utilisez la fonction Égaux ? pour comparer ces entiers.

Abandon de références ouvertes

Vous pouvez abandonner des références de VI ouvertes soit à partir de la face-avant du VI, soit en utilisant la méthode Abandonner le VI. Cependant les références à des VIs préparées pour une exécution asynchrones peuvent être problématiques en fonction des options utilisées pour les ouvrir :

  • 0x80 — L'abandon d'un VI de type appeler et oublier n'est possible que si vous l'abandonnez manuellement depuis sa face-avant ou en appelant la méthode Abandonner le VI sur le VI. Sinon, le VI s'exécute jusqu'à la fin, même si vous fermez la référence ou abandonnez le VI appelant.
  • 0x100 — Les VIs de type appeler et collecter sont abandonnés dans les cas suivants :
    • Vous abandonnez le VI qui a ouvert la référence au VI de type appeler et collecter. Dans ce cas, LabVIEW abandonne toutes les instances du VI qui sont en train de s'exécuter.
    • Vous abandonnez manuellement une instance spécifique du VI. Dans ce cas, un seul nœud Attendre un appel asynchrone renvoie une erreur indiquant que le VI appelé a été abandonné. Tous les autres nœuds Attendre un appel asynchrone qui attendaient des appels de la même référence de VI continuent à attendre.
    • Vous appelez la méthode Abandonner le VI sur la référence du VI de type appeler et collecter. Dans ce cas, LabVIEW abandonne toutes les instances du VI qui sont en train de s'exécuter. Un nombre correspondant de nœuds Attendre un appel asynchrone renvoient des erreurs.

Fermeture des références ouvertes

Lorsque vous avez fini d'utiliser une référence obtenue avec cette fonction, fermez la référence avec la fonction Fermer une référence. La fermeture explicite d'une référence permet à LabVIEW de libérer les ressources allouées au maintien de cette référence et contribue par conséquent à une optimisation de l'allocation de mémoire et des performances. Sinon, LabVIEW ne peut pas fermer la référence tant que le VI qui l'a ouverte n'a pas fini de s'exécuter.

Remarque  La fermeture d'une référence qui a été ouverte avec le marqueur d'option 0x80 ne cause pas l'abandon du VI référencé.

Ouverture d'une référence à un VI dans une application autonome

Si vous voulez ouvrir de manière dynamique un VI à la fois sur l'ordinateur de développement et dans une application autonome, utilisez un chemin relatif pour chemin du VI.

Autres détails divers

Exemples

Reportez-vous aux VIs suivants pour obtenir des exemples d'utilisation de "Ouvrir une référence de VI" :

  • VI Asynchronous Call and Collect (Using Option 0x40).vi : labview\examples\Application Control\VI Server\Asynchronous Call By Reference
  • VI Asynchronous Call and Forget.vi : labview\examples\Application Control\VI Server\Asynchronous Call By Reference
  • VI Asynchronous Call and Collect.vi : labview\examples\Application Control\VI Server\Asynchronous Call By Reference

CET ARTICLE VOUS A-T-IL ÉTÉ UTILE ?

Pas utile