Renvoie une référence à un VI, une commande personnalisée ou une variable globale spécifiée par chemin vers le fichier se trouvant sur le disque, la chaîne de nom ou la référence existante.


icon

Entrées/Sorties

  • cvirn.png spécificateur de type du refnum de VI (pour type seulement)

    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.

  • caprn.png référence d'application (local)

    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.
  • cpath.png chemin du VI

    vipath accepte un chemin vers le VI que vous voulez référencer, une chaîne contenant le nom du VI que vous voulez référencer, ou une référence VI au VI que vous voulez référencer.

    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 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 un VI correspondant est introuvable dans la mémoire, LabVIEW tente de le charger à partir de ce fichier sur le disque. Une erreur se produit si LabVIEW ne peut pas trouver le fichier.

    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 référencer un VI sous Linux dans My HD/LabVIEW Vis/foo.vi à partir d'une application Windows, utilisez le chemin My HD:\LabVIEW Vis/foo.vi. Inversement, pour référencer un VI sur un ordinateur fonctionnant sous Windows à C:\labview\foo.vi à partir d'une application Linux, câblez le chemin C/labview/foo.vi.

    Si vous câblez un chemin ou si vous câblez à la fois des références de VI et d'application, LabVIEW attend que l'interface utilisateur soit inactive pour charger le VI à partir du disque. Si vous câblez une chaîne de noms ou une référence de VI sans référence d'application, LabVIEW n'a pas besoin d'attendre que l'interface utilisateur soit inactive, car il ne charge pas de VI à partir du disque. LabVIEW ne recherche la mémoire que pour un VI dont le nom est spécifié.

    Remarque LabVIEW ne permet pas d'ouvrir une référence à un VI clone en utilisant un nom avec la fonction Open VI Reference. L'utilisation de cette fonction pour ouvrir une référence à un VI clone peut provoquer un crash de LabVIEW.
  • ci32.png options

    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
    0x01 Indiquer 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.
    0x02 Ouvrir 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.
    0x04 Inviter 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.
    0x08

    Préparer à une exécution réentrante : utilisez ce marqueur d'option si vous voulez une référence à un clone réentrant du VI cible plutôt que le VI cible même. Les clones réentrants d'un VI vous permettent d'ouvrir plusieurs faces-avant du même VI ou d'exécuter plusieurs copies du même VI en parallèle. Pour chaque référence au VI cible, LabVIEW crée un clone séparé du VI cible. Ce clone ne fait pas partie du pool de clones partagés utilisés par les appels de sous-VI normaux.

    LabVIEW ignore ce marqueur si vous câblez l'entrée spécificateur de type du refnum de VI (pour le type seulement) car lorsque vous fournissez un spécificateur de type, vous pouvez toujours obtenir un clone réentrant si le VI cible est réentrant. LabVIEW renvoie l'erreur 1096 si le VI cible n'est pas réentrant.

    Astuce Utilisez ce marqueur avec la méthode Exécuter le VI pour exécuter plusieurs clones réentrants en parallèle. 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 de manière asynchrone. 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.
    0x10 Inviter à 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é.
    0x20 Masquer 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.
    0x40 Activer 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.

    L'indicateur d'option 0x40 n'est valable que dans les situations suivantes :

    • 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.
    0x80 Pré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.
    Remarque LabVIEW renvoie l'erreur 1578 si vous utilisez ce marqueur d'option avec une référence à un VI distant.
    0x100 Pré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. Ne pas utiliser ce drapeau d'option avec 0x08 ou 0x80.
    Remarque LabVIEW renvoie l'erreur 1578 si vous utilisez cette option avec une référence à un VI distant.
  • cerrcodeclst.png entrée d'erreur (pas d'erreur)

    entrée d'erreur décrit les conditions d'erreur qui ont lieu avant l'exécution de ce nœud. Cette entrée fournit la fonctionnalité entrée d'erreur standard.

  • cstr.png mot de passe ("")

    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 également utiliser une référence de serveur VI pour obtenir une référence authentifiée à un VI.
  • ivirn.png référence au 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.
  • ierrcodeclst.png sortie d'erreur

    sortie d'erreur contient des informations sur l'erreur. Cette sortie fournit la fonctionnalité sortie d'erreur standard.

  • 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 exemples de fichiers inclus avec LabVIEW suivants.

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