Bibliothèque NI-VISA .NET

Aperçu

Cette page couvre les fonctionnalités clés de la bibliothèque NI-VISA .NET. Pour télécharger la bibliothèque NI-VISA .NET et trouver de la documentation et des exemples, reportez-vous à .NET Resources for NI Hardware and Software.

Contenu

Introduction

La bibliothèque .NET NI-VISA contient des classes qui fournissent à NI-VISA une interface .NET. Cette bibliothèque est conforme aux Spécifications d'implémentation VISA pour .NET rédigées par IVI Foundation. Cette bibliothèque remplace la bibliothèque NI VisaNS, qui avait été implémentée avant que la Fondation IVI ne standardise l'API .NET en VISA. NI-VISA est  l'implémentation NI de la spécification VISA (Virtual Instrumentation Software Architecture) standard de l'industrie. Ensemble, les spécifications VISA et VISA .NET définissent une API standard et cohérente pour communiquer avec des instruments et d'autres périphériques dans l'environnement .NET. NI-VISA .NET supporte plusieurs technologies de bus et d'interface, notamment TCP/IP, USB, GPIB, Série et PCI/PXI. Les classes fournies par la bibliothèque .NET NI-VISA implémentent des interfaces et utilisent des types qui sont définis dans la bibliothèque .NET IVI VISA (Ivi.Visa) qui est fournie par IVI Foundation. Pour plus de détails sur la bibliothèque IVI VISA .NET, reportez-vous à VPP-4.3.6 : Spécifications d'implémentation VISA pour .NET.

Choisir une API de contrôle d’instruments

Dans une application typique, NI vous recommande d'utiliser un driver d'instruments spécifique à votre instrument si celui-ci est disponible. Reportez-vous à la section Télécharger l'API pour un instrument tiers des Ressources .NET pour le matériel et les logiciels NI pour savoir où télécharger Drivers d'instruments. N'utilisez la bibliothèque .NET NI-VISA que si un tel driver n'est pas disponible ou si vous avez besoin de fonctionnalités supplémentaires qui ne sont pas disponibles dans le driver.

NI-VISA .NET et le driver NI-VISA

L'espace de noms NationalInstruments.Visa comprend des classes .NET qui fournissent une interface riche orientée objet au driver NI-VISA. L'objet de session VISA est le concept fondamental dans la spécification de l'API VISA. Une session VISA identifie une ressource. Il existe plusieurs types de ressources, notamment les ressources d'instruments, les ressources de socket et les ressources d'interface. Dans la bibliothèque de classes NI-VISA .NET, les classes dérivées de Session, appelées classes dérivées de Session, encapsulent les objets de session VISA.

Les méthodes des classes dérivées de la session effectuent des opérations, comme la lecture ou l'écriture de données, sur l'objet de session VISA. Les méthodes des classes .NET NI-VISA correspondent aux opérations de l'API NI-VISA C. Les propriétés des classes dérivées de Session configurent l'objet de session VISA et correspondent aux attributs de l'API NI-VISA C.

Les classes dérivées des sessions ont des membres d'événement .NET. Vous pouvez enregistrer un délégué avec un événement .NET pour recevoir une notification lorsque l'événement se produit. Les méthodes et propriétés de classe dérivées des sessions vérifient les erreurs et traduisent les codes d'erreur des drivers NI-VISA en types d'exception .NET.

Utilisation de classes dérivées de sessions

Les classes principales de l'espace de noms NationalInstruments.Visa sont GpibSession, PxiSession, SerialSession, TcpipSession, TcpipSocket, UsbSession et VxiSession. Ces classes dérivées de Session, appelées aussi classes « feuilles » dans le présent document, dérivent indirectement de Session. Ces classes fournissent la fonctionnalité principale de VISA. Chaque classe dérivée de Session représente un type de ressource VISA. Chaque classe dérivée de Session n'expose que les méthodes, propriétés et événements valides pour le type de ressource représenté par la classe dérivée de Session. GpibInterface, PxiBackplane, PxiMemory, UsbRaw, VxiBackplane et VxiMemory sont des classes feuilles dérivées de session supplémentaires pour les applications avancées.

Pour communiquer avec une ressource VISA dans une application ou bibliothèque .NET typique, créez une instance de la classe dérivée de Session spécifique qui correspond à la ressource. Définissez des propriétés sur l'instance pour configurer la ressource. Appeler des méthodes sur l'instance pour lire et écrire dans la ressource. Vous devez appeler Disposer pour libérer la ressource lorsque vous n'avez plus besoin d'y accéder.

Certains types d'applications ou de bibliothèques, comme les Drivers d'instruments, doivent accéder aux ressources de manière indépendante de l'interface. NI-VISA .NET inclut des classes supplémentaires que vous pouvez utiliser pour créer des ressources VISA et y accéder de manière indépendante de l'interface. Par exemple, pour créer un objet que vous pouvez utiliser pour communiquer avec un instrument via une interface GPIB ou une interface série, appelez Ouvrir et adaptez la valeur renvoyée à MessageBasedSession.

Utilisation des opérations d'E/S

L'ensemble principal d'opérations que vous effectuez sur un objet dérivé de Session est l'ensemble des opérations d'entrée/sortie. Les opérations que vous utilisez pour les E/S pour les ressources basées messages sont différentes de celles que vous utilisez pour les ressources basées registres. Chaque classe feuille dérivée de Session ne fournit que les méthodes d'E/S appropriées pour la ressource représentée par la classe dérivée de Session.

Pour communiquer avec des ressources basées messages, vous devez transmettre des chaînes ou des tableaux d'octets entre l'application et la ressource. Un instrument GPIB est un exemple de ressource basée sur des messages. Pour communiquer avec des ressources basées registres, vous devez définir des registres sur la ressource ou accéder directement à la mémoire exportée par la ressource. Un instrument PXI est un exemple de ressource basée sur registre.

Opérations d'E/S simples par messages

Les classes dérivées de sessions qui représentent des ressources basées messages incluent une propriété RawIO qui fournit des méthodes que vous pouvez utiliser pour lire et écrire dans des ressources basées messages. L'objet RawIO fournit des méthodes de lecture et d'écriture synchrones et asynchrones. Les méthodes synchrones effectuent toute l'opération et renvoient lorsque l'opération est terminée. Les méthodes asynchrones démarrent l'opération, renvoient immédiatement et lorsque l'opération est terminée, appellent un délégué que vous fournissez ou conservent les données jusqu'à ce que vous en fassiez la demande.

Utilisez ReadString pour lire une chaîne d'une ressource de manière synchrone. Utilisez Lecture pour lire de manière synchrone un tableau de données binaires d'une ressource. Utilisez BeginRead pour lancer une opération de lecture asynchrone. Utilisez EndReadString ou EndRead pour obtenir le résultat d'une opération de lecture asynchrone.

Utilisez Écrire pour écrire de manière synchrone une chaîne ou un tableau de données binaires dans une ressource. Utilisez BeginWrite pour lancer une opération d'écriture asynchrone. Utilisez EndWrite pour obtenir le résultat d'une opération d'écriture asynchrone.

Opérations d'E/S formatées par messages

Les classes dérivées de sessions qui représentent des ressources basées messages incluent une propriété FormatedIO qui fournit des opérations d'E/S formatées de plus haut niveau que vous utilisez pour lire et écrire dans des ressources basées messages.

Utilisez l'une des méthodes Écrire ou ÉcrireLigne pour formater et écrire de manière synchrone des messages textuels sur la ressource. Utilisez WriteBinary pour envoyer des blocs de données binaires. Utilisez la propriété EncodageBinaire pour spécifier comment l'objet E/S formatées formate les données binaires.

Utilisez l'une des méthodes Lire pour lire et analyser de manière synchrone des messages textuels et des données binaires de la ressource. Les différentes méthodes de lecture incluent une fonctionnalité de lecture des valeurs d'octets, de caractères, de nombres double précision, entiers et flottants. Par exemple, ReadInt64 lit une valeur Int64 encodée ASCII et ReadDouble lit une valeur Double encodée ASCII. Utilisez la propriété EncodageBinaire pour spécifier comment l'objet E/S formatées analyse les données binaires.

Utilisez une des méthodes Imprimer pour formater les données dans le format spécifié et les écrire dans la ressource. Utilisez une des méthodes de Balayage pour lire une chaîne formatée de la ressource et analyser la chaîne selon le format spécifié. Les spécificateurs de format utilisés dans la chaîne de format fournie aux méthodes Printf et Scanf sont très similaires à ceux utilisés pour les fonctions VISA viPrintf et viScanf, à quelques différences près. Pour plus de détails sur les méthodes FormattedIO et les spécificateurs de format supportés, consultez la description de IMessageBasedFormattedIO dans la spécification VPP-4.3.6.

Opérations d'E/S basées registres

Les classes dérivées de sessions qui représentent des ressources basées registres incluent des méthodes que vous utilisez pour lire et écrire dans de la mémoire exportée par des ressources basées registres.

Utilisez In8, In16, In32 et In64 pour lire des valeurs scalaires de la mémoire du périphérique. Utilisez MoveIn8, MoveIn16, MoveIn32 et MoveIn64 pour lire des tableaux de valeurs dans la mémoire du périphérique.

Utilisez Out8, Out16, Out32 et Out64 pour écrire des valeurs scalaires dans la mémoire du périphérique. Utilisez MoveOut8, MoveOut16, MoveOut32 et MoveOut64 pour écrire des tableaux de valeurs dans la mémoire du périphérique.

Utilisation de la gestion d'erreur

Le driver NI-VISA renvoie des codes d'erreur qui indiquent le succès ou l'échec d'une opération. Lorsqu'un appel de méthode .NET NI-VISA ou un accès à une propriété entraîne une erreur dans le driver NI-VISA, la classe .NET crée et renvoie une ExceptionIvi.Visa.VisaNatif. La propriété ErrorCode de cet objet d'exception contient le code d'erreur renvoyé par le driver NI-VISA.

Diverses méthodes MessageBasedSession pour lire et écrire des données renverront une exception Ivi.Visa.IOTimeoutException si l'opération a expiré. La propriété ActualCount de cette exception contient le nombre d'éléments lus ou écrits avant le timeout. La propriété ActualData de cette exception contient les octets lus ou écrits avant le timeout.

Pour obtenir la liste de tous les codes d'erreur NI-VISA, reportez-vous à la rubrique Codes d'erreur de l'Aide NI-VISA. Pour accéder à l'Aide NI-VISA dans le menu Démarrer, sélectionnez Démarrer»Programmes»National Instruments»VISA»Aide NI-VISA.

Utilisation du gestionnaire de ressources

La classe ResourceManager fournit des fonctionnalités permettant de localiser, d'analyser et d'ouvrir des classes dérivées de sessions avec des noms de ressources. Utilisez Ouvrir pour instancier la classe dérivée de Session appropriée en fonction du nom de ressource donné. Utilisez Rechercher pour obtenir une liste des noms de ressources disponibles dans le domaine d'application, étant donné une expression recherchée. Utilisez Analyser pour obtenir des informations supplémentaires sur un nom de ressource.

Vous devez appeler Disposer pour libérer la ressource lorsque vous n'avez plus besoin d'y accéder. Tout objet dérivé de Session instancié avec la méthode Ouvrir est toujours valide une fois l'instance ResourceManager éliminée.

Relation avec l’API VisaNS

L'API NI-VISA .NET est similaire à l'API VisaNS et supporte la majorité des fonctionnalités fournies par VisaNS. VisaNS est l'ancienne API .NET pour VISA créée par NI avant que la spécification standard ne soit disponible. NI vous recommande d'utiliser l'API .NET standard NI-VISA au lieu de VisaNS pour toute nouvelle application que vous développez. Le support de l'ancienne API VisaNS sera supprimé dans une prochaine version.

De plus, il est possible de modifier les applications qui utilisent l'API VisaNS pour utiliser l'API .NET standard à la place. Par exemple, les classes dérivées de Session supportées dans la nouvelle API sont nommées de la même manière avec des constructeurs similaires. Cependant, comme la nouvelle API implémente des interfaces spécifiées par la spécification IVI et utilise plusieurs types définis dans cette spécification, les membres réels de ces classes dérivées de Session sont différents de ceux de VisaNS et nécessiteront donc des modifications manuelles de vos applications pour migrer de VisaNS vers NI-VISA .NET. Dans certains cas, comme la fonctionnalité d'E/S formatées, l'API est considérablement différente de VisaNS et peut nécessiter des modifications plus importantes pour la migration.

Certaines fonctionnalités supportées par l'API VisaNS ne le sont pas ou le sont différemment dans l'API NI-VISA .NET. Certaines des principales différences sont décrites ci-dessous.

  • Les opérations d'E/S par messages sont fournies de manière différente
    Les opérations basées sur des messages simples, telles que ReadString ou Write, qui sont implémentées par certaines classes dérivées de Session dans VisaNS sont désormais fournies par la propriété RawIO de Ivi.Visa. Interface IMessageBasedSession implémentée par certaines classes dérivées de Session. La propriété RawIO est d'un type qui implémente l'interface Ivi.Visa.IMessageBasedRawIO.

    De même, les opérations basées sur des messages formatés qui sont implémentées par MessageBasedSessionReader et MessageBasedSessionWriter dans VisaNS sont désormais fournies par la propriété FormattedIO de l'interface Ivi.Visa.IMessageBasedSession que certaines classes dérivées de Session implémentent. La propriété FormattedIO est d'un type qui implémente l'interface Ivi.Visa.IMessageBasedFormattedIO.
  • Les spécificateurs de format utilisés pour les E/S formatées sont différents
    Les méthodes d'E/S formatées de VisaNS supportent des chaînes de format similaires à celles utilisées par la méthode Chaîne.Formater. NI-VISA .NET supporte toutefois les chaînes de format avec des spécificateurs de format similaires à ceux utilisés par les fonctions VISA viPrintf et viScanf . Pour plus de détails sur les méthodes FormattedIO et les spécificateurs de format supportés, consultez la description de l'interface Ivi.Visa.IMessageBasedFormattedIO dans la spécification VPP-4.3.6.
  • La classe ResourceManager est jetable
    La classe ResourceManager est utilisée différemment. Pour obtenir une instance d'un objet ResourceManager, construisez une nouvelle instance en utilisant le constructeur public ResourceManager(). L'objet ResourceManager est jetable et devrait être éliminé une fois qu'il n'est plus nécessaire. Notez que tout objet dérivé de Session obtenu en utilisant la méthode Ouvrir d'un ResourceManager reste valide une fois l'objet ResourceManager éliminé.
  • Les types d'événements VISA non standard sont supportés différemment
    Les membres d'événements .NET disponibles dans diverses classes dérivées de Session peuvent être utilisés pour s'abonner à des méthodes de délégation afin de recevoir des notifications d'occurrences de types d'événements VISA standard. L'utilisation de types d'événements non standard avec un délégué d'événements n'est pas supportée et de tels événements ne peuvent être activés qu'avec la méthode EnableEvent de la classe Session qui utilise le mécanisme de file d'attente disponible dans le driver NI-VISA. Des notifications de tels événements peuvent être reçues en utilisant la méthode WaitOnEvent de la classe Session.
  • Le .NET Remoting n'est pas supporté
    L'API .NET Remoting est considérée comme une technologie ancienne et n'est pas recommandée par Microsoft pour les nouvelles applications. NI-VISA .NET ne prend pas en charge .NET Remoting. Le serveur NI-VISA fournit un moyen d'accéder à distance aux ressources VISA et peut être utilisé comme alternative.
  • Les classes de feuilles dérivées des sessions sont scellées
    Les classes
    feuilles, comme GpibSession ou TcpipSession, sont scellées et les autres classes ne peuvent pas en être dérivées.
  • FirewireSession n'est pas supporté
    Le driver NI-VISA ne supporte plus les ressources FireWire et par conséquent, la bibliothèque NI-VISA .NET ne fournit pas de classe dérivée de Session pour ces ressources.

Was this information helpful?

Yes

No