Lecture et écriture de variables partagées par programmation
- Mise à jour2025-08-27
- Temps de lecture : 7 minute(s)
Si votre application accède à un grand nombre de variables partagées, vous pouvez lire et écrire ces variables partagées par programmation avec les fonctions de la palette Variable partagée. Cette technique de programmation est souvent plus claire et plus extensible que l'utilisation de nœuds Variable partagée, car vous pouvez accéder à plusieurs variables partagées avec une seule fonction de Variable partagée, alors que chaque nœud Variable partagée ne peut accéder qu'à une variable partagée.
- Variables PSP — Éléments de données publiés sur le réseau en utilisant le protocole NI-PSP (NI Publish-Subscribe Protocol). Les variables partagées publiées sur réseau, les variables d'E/S pour lesquelles la publication sur réseau a été activée et les voies DAQ publiées via le serveur d'E/S NI-DAQmx sont des exemples courants de variables PSP.
- Variables d'E/S — Variables partagées qui utilisent le moteur de balayage NI pour accéder point par point aux données d'E/S.
La figure suivante montre un exemple de lecture de variables partagées par programmation, avec placement de ces valeurs dans un tableau préalloué et traitement de ces valeurs.
Dans la figure précédente, les événements suivants surviennent.
- La fonction Rechercher dans un conteneur de variables trouve toutes les variables partagées de type de données double précision qui se trouvent sous Ma bibliothèque, et la sortie tableau de refnums en sortie renvoie un tableau de références à ces variables partagées.
- La fonction Établir une connexion à une variable utilise le tableau d'URL d'identification de variables pour établir une connexion à chaque variable partagée. La boucle For s'arrête en cas d'erreur.
- La fonction Taille d'un tableau utilise le tableau de références aux variables partagées pour calculer le nombre de variables partagées trouvées par la fonction Rechercher dans un conteneur de variables.
- La fonction Initialiser un tableau utilise le nombre de variables partagées pour créer un tableau pour les données des variables partagées. En initialisant un tableau pour les données des variables partagées en dehors de la boucle While, cette application optimise l'utilisation du processeur.
- La fonction Lire une variable lit chaque variable partagée ouverte par la fonction Établir une connexion à une variable.
- La fonction Remplacer une portion d'un tableau stocke les données des variables partagées dans le tableau créé par la fonction Initialiser un tableau.
- Le sous-VI Traiter des données traite le tableau de données des variables partagées.
- Les opérations de lecture et de traitement s'exécutent en continu dans la boucle While jusqu'à ce qu'une erreur se produise ou que l'utilisateur clique sur le bouton Stop.
- La fonction Fermer une connexion à une variable ferme les connexions aux variables partagées.
La fonctionnalité de cette application est la même que celle d'une application qui utilise des nœuds Variable partagée. Cependant, comme cette application utilise l'accès par programmation aux variables partagées, vous pouvez l'étendre à des centaines ou des milliers de variables sans mettre à jour le diagramme. Par exemple, supposons que Ma bibliothèque contienne dix variables, de Variable1 à Variable10. Vous pourriez utiliser la boîte de dialogue Création de variables par lots pour ajouter les variables Variable11 à Variable500 à Ma bibliothèque. Lorsque vous exécutez le VI après avoir redéployé Ma bibliothèque, il lit Variable1 à Variable500 sans avoir besoin d'ajouter les nouvelles variables au diagramme.
Les sections suivantes fournissent des informations sur les techniques de programmation utilisées dans l'exemple précédent.
Recherche de variables partagées
Utilisez la fonction Rechercher dans un conteneur de variables pour rechercher des variables partagées et des conteneurs de variables qui répondent à des critères précis. Par exemple, le VI représenté dans le diagramme suivant utilise cette fonction pour trouver toutes les variables partagées qui se trouvent sous un conteneur donné et répondent aux critères suivants :
- Existe dans Ma bibliothèque sur l'ordinateur local
- Type de données Double précision
- URL d'identification de variablesL'URL d'identification de variable contient la chaîne foo
| Remarque Vous pouvez utiliser la boîte de dialogue Naviguer jusqu'à un objet variable pour naviguer jusqu'à des variables partagées et des conteneurs de variables pendant l'édition aussi bien sur le réseau que dans le projet actuel. Cliquez sur la flèche vers le bas d'une commande ou constante variable, comme la constante refnum de conteneur en entrée de la figure ci-dessus, et sélectionnez Parcourir pour afficher la boîte de dialogue Naviguer jusqu'à un objet variable. |
| Attention Lorsque vous lisez ou écrivez des variables partagées que vous avez trouvées par programmation, vous risquez de lire ou d'écrire des données du mauvais type. Utilisez l'entrée type de données de la fonction Rechercher dans un conteneur de variables pour ne pas risquer de lire ou d'écrire une variable partagée avec le mauvais type de données. |
Vous pouvez aussi utiliser les propriétés et la méthode de Conteneur de variables suivantes pour rechercher des variables partagées par programmation.
Le VI de la figure suivante utilise la propriété Toutes les variables pour trouver toutes les variables PSP hébergées sur le réseau local.
Dans la figure précédente, les événements suivants surviennent.
- La constante Référence d'objet de variables local passe une référence au moteur de variables PSP local à la propriété Moteurs distants.
- La propriété Moteurs distants renvoie le tableau de moteurs de variables PSP hébergés sur les autres ordinateurs du réseau. Ensuite, le VI effectue des itérations sur chaque moteur de variables PSP dans une boucle For.
- La propriété Racine obtient une référence au conteneur de variables PSP racine sur chaque ordinateur distant.
- La propriété Toutes les variables obtient un tableau de références à toutes les variables hébergées sur l'ordinateur distant.
- Le VI ajoute toutes les variables trouvées sur le réseau au tableau Toutes les variables PSP.
| Astuce Vous pouvez utiliser le nœud de propriété de variable ; il est préconfiguré avec la classe Objet variable comme point de départ pour construire le diagramme de la figure précédente. |
Établissement et fermeture de connexions à des variables partagées
Utilisez la fonction Établir une connexion à une variable pour ouvrir une connexion à une variable par programmation, comme l'illustre le diagramme suivant.
Lorsque l'application a fini d'accéder aux variables partagées, utilisez la fonction Fermer une connexion à une variable dans une boucle For pour fermer toutes les références à des variables. Cette fonction libère les ressources mémoire allouées à chaque connexion de variable.
Lecture et écriture de variables partagées
Utilisez la fonction Lire une variable pour lire les valeurs d'une variable en direct par programmation. Contrairement au nœud Variable partagée, que vous devez lier à une variable partagée spécifique pendant l'édition, la fonction Lire une variable comporte une entrée refnum de variable partagée en entrée que vous pouvez utiliser pour spécifier la variable partagée à lire pendant l'exécution. Par exemple, vous pouvez utiliser la fonction Lire une variable dans une boucle For pour lire plusieurs variables partagées spécifiées par un tableau de refnums, comme l'illustre le diagramme suivant.
Utilisez la fonction Écrire une variable pour écrire les valeurs d'une variable en direct par programmation. Par exemple, vous pouvez utiliser la fonction Écrire une variable dans une boucle For pour écrire à plusieurs variables partagées spécifiées par un tableau de refnums.
| Astuce Vous pouvez optimiser les performances et simplifier le diagramme en lisant et écrivant les conteneurs de variables d'E/S sous forme de tableaux. |
| Remarque Si vous écrivez moins de 8 kilo-octets de données à une variable partagée, LabVIEW peut mettre jusqu'à 10 millisecondes pour envoyer ces données sur le réseau. Pour éliminer ce délai, utilisez le VI Vider les données des variables partagées afin d'envoyer immédiatement les données de la variable partagée. |