Esta página cubre las características clave de la biblioteca NI-VISA .NET. Para descargar la biblioteca NI-VISA .NET y encontrar documentación y ejemplos, consulte Recursos .NET para hardware y software NI.
La biblioteca NI-VISA .NET contiene clases que proporcionan una interfaz .NET a NI-VISA. Esta biblioteca cumple con la especificación de implementación de VISA para .NET de la Fundación IVI. Esta biblioteca reemplaza a la biblioteca NI VisaNS, que se implementó antes de que la Fundación IVI estandarizara la API de .NET a VISA. NI-VISA es la implementación de NI de la especificación de Arquitectura de Software de Instrumentación Virtual (VISA) estándar de la industria. Juntas, las especificaciones VISA y VISA .NET definen una API estándar y consistente para comunicarse con instrumentos y otros dispositivos en el entorno .NET. NI-VISA .NET soporta varias tecnologías de bus e interfaz, incluyendo TCP/IP, USB, GPIB, Serial y PCI/PXI. Las clases proporcionadas por la biblioteca NI-VISA .NET implementan interfaces y tipos de uso que se definen en la biblioteca IVI VISA .NET (Ivi.Visa) que proporciona la Fundación IVI. Para obtener más detalles sobre la biblioteca IVI VISA .NET, consulte VPP-4.3.6: Especificación de implementación de VISA para .NET.
En una aplicación típica, NI recomienda que utilice un controlador de instrumento específico para su instrumento si hay uno disponible. Consulte la sección Descargar API para instrumentos de terceros de .NET Resources for NI Hardware and Software para saber dónde descargar Instrument Drivers. Utilice la biblioteca NI-VISA .NET solo si dicho controlador no está disponible o necesita funciones adicionales que no están disponibles en el controlador.
El espacio de nombres NationalInstruments.Visa incluye clases .NET que proporcionan una interfaz rica y orientada a objetos al controlador NI-VISA. El objeto de sesión VISA es el concepto fundamental en la especificación API de VISA. Una sesión de VISA identifica un recurso. Hay varios tipos de recursos, incluyendo recursos de instrumentos, recursos de socket y recursos de interfaz. En la biblioteca de clases NI-VISA .NET, las clases derivadas de Session, denominadas clases derivadas de Session, encapsulan los objetos de sesión VISA.
Los métodos de las clases derivadas de sesión realizan operaciones, como leer o escribir datos, en el objeto de sesión VISA. Los métodos de las clases NI-VISA .NET se asignan a las operaciones en la API NI-VISA C. Las propiedades de las clases derivadas de la sesión configuran el objeto de sesión VISA y la asignación a los atributos de la API NI-VISA C.
Las clases derivadas de la sesión tienen miembros de eventos .NET. Puede registrar un delegado con un evento .NET para recibir notificaciones cuando se produzca el evento. Los métodos y propiedades de clase derivados de la sesión realizan la comprobación de errores y la traducción de códigos de error de controlador NI-VISA a tipos de excepción .NET.
Las clases principales en el espacio de nombres NationalInstruments.Visa son GpibSession, PxiSession, SerialSession, TcpipSession, TcpipSocket, UsbSession y VxiSession. Estas clases derivadas de la Sesión, también denominadas en este documento clases “hojas”, derivan indirectamente de la Sesión. Estas clases proporcionan la funcionalidad básica de VISA. Cada clase derivada de la sesión representa un tipo de recurso de VISA. Cada clase derivada de sesión expone solo los métodos, propiedades y eventos que son válidos para el tipo de recurso que representa la clase derivada de sesión. GpibInterface, PxiBackplane, PxiMemory, UsbRaw, VxiBackplane y VxiMemory son clases de hojas derivadas de sesiones adicionales para aplicaciones avanzadas.
Para comunicarse con un recurso de VISA en una aplicación o biblioteca típica de .NET, cree una instancia de la clase derivada de sesión específica que corresponda al recurso. Establezca propiedades en la instancia para configurar el recurso. Llame a los métodos de la instancia para leer y escribir en el recurso. Debe llamar a Dispose para liberar el recurso cuando ya no necesite acceder a él.
Algunos tipos de aplicaciones o bibliotecas, como Instrument Drivers, deben acceder a los recursos de una manera independiente de la interfaz. NI-VISA .NET incluye clases adicionales que puede utilizar para crear y acceder a los recursos de VISA de una manera independiente de la interfaz. Por ejemplo, para crear un objeto que pueda usar para comunicarse con un instrumento a través de una interfaz GPIB o una interfaz serie, llame a Abrir y emita el valor devuelto a MessageBasedSession.
El conjunto principal de operaciones que realiza en un objeto derivado de la sesión es el conjunto de operaciones de entrada/salida. Las operaciones que utiliza para E/S para recursos basados en mensajes son diferentes de los métodos que utiliza para recursos basados en registros. Cada clase de hoja derivada de sesión proporciona solo los métodos de E/S que son apropiados para el recurso que representa la clase derivada de sesión.
Para comunicarse con recursos basados en mensajes, debe pasar cadenas o matrices de bytes entre la aplicación y el recurso. Un instrumento GPIB es un ejemplo de recurso basado en mensajes. Para comunicarse con los recursos basados en registros, debe establecer registros en el recurso o acceder directamente a la memoria exportada por el recurso. Un instrumento PXI es un ejemplo de recurso basado en registros.
Las clases derivadas de sesiones que representan recursos basados en mensajes incluyen una propiedad RawIO que proporciona métodos que puede usar para leer y escribir en recursos basados en mensajes. El objeto RawIO proporciona métodos de lectura y escritura síncronos y asíncronos. Los métodos síncronos realizan toda la operación y regresan cuando se completa la operación. Los métodos asíncronos inician la operación, regresan inmediatamente y cuando la operación se complete, llame a un delegado que proporcione o mantenga los datos hasta que lo solicite.
Utilice ReadString para leer de forma sincronizada una cadena de un recurso. Utilice Read para leer de forma sincronizada una matriz de datos binarios de un recurso. Utilice BeginRead para iniciar una operación de lectura asíncrona. Utilice EndReadString o EndRead para obtener el resultado de una operación de lectura asíncrona.
Utilice Write para escribir de forma sincronizada una cadena o una matriz de datos binarios en un recurso. Utilice BeginWrite para iniciar una operación de escritura asíncrona. Utilice EndWrite para obtener el resultado de una operación de escritura asíncrona.
Las clases derivadas de sesiones que representan recursos basados en mensajes incluyen una propiedad FormattedIO que proporciona operaciones de E/S formateadas de nivel superior que utiliza para leer y escribir en recursos basados en mensajes.
Utilice uno de los métodos Write o WriteLine para formatear y escribir mensajes basados en texto de forma sincronizada en el recurso. Utilice WriteBinary para enviar bloques de datos binarios. Utilice la propiedad BinaryEncoding para especificar cómo formatea los datos binarios el objeto FormattedIO.
Utilice uno de los métodos Leer para leer y analizar sincrónicamente mensajes basados en texto y datos binarios del recurso. Los diversos métodos de lectura incluyen funcionalidad para leer valores de byte, carácter, doble, entero y coma flotante. Por ejemplo, ReadInt64 lee un valor Int64 codificado ASCII y ReadDouble lee un valor Double codificado ASCII. Utilice la propiedad BinaryEncoding para especificar cómo analiza los datos binarios el objeto FormattedIO.
Utilice uno de los métodos Printf para formatear los datos en el formato especificado y escribir en el recurso. Utilice uno de los métodos Scanf para leer una cadena formateada del recurso y analizar la cadena según el formato especificado. Los especificadores de formato utilizados en la cadena de formatos proporcionada a los métodos Printf y Scanf son muy similares a los utilizados para las funciones VISA viPrintf y viScanf, con algunas diferencias. Para obtener más detalles sobre los métodos FormattedIO y los especificadores de formato compatibles, consulte la descripción de IMessageBasedFormattedIO en la especificación VPP-4.3.6.
Las clases derivadas de sesiones que representan recursos basados en registros incluyen métodos que se utilizan para leer y escribir en la memoria exportada por recursos basados en registros.
Utilice In8, In16, In32 e In64 para leer valores escalares de la memoria del dispositivo. Utilice MoveIn8, MoveIn16, MoveIn32 y MoveIn64 para leer matrices de valores de la memoria del dispositivo.
Utilice Out8, Out16, Out32 y Out64 para escribir valores escalares en la memoria del dispositivo. Utilice MoveOut8, MoveOut16, MoveOut32 y MoveOut64 para escribir matrices de valores en la memoria del dispositivo.
El controlador NI-VISA devuelve códigos de error que indican el éxito o fracaso de una operación. Cuando una llamada al método NI-VISA .NET o un acceso a una propiedad da como resultado un error en el controlador NI-VISA, la clase .NET crea y devuelve una excepción Ivi.Visa.NativeVisaException. La propiedad ErrorCode de este objeto de excepción contiene el código de error que devolvió la operación del controlador NI-VISA.
Varios métodos MessageBasedSession para leer y escribir datos devolverán una Ivi.Visa.IOTimeoutException si la operación supera el tiempo de espera. La propiedad ActualCount de esta excepción contiene el número de elementos leídos o escritos antes de que se produjera el tiempo de espera. La propiedad ActualData de esta excepción contiene los bytes leídos o escritos antes de que se produjera el tiempo de espera.
Para obtener una lista de todos los códigos de error NI-VISA, consulte el tema Códigos de error en la Ayuda NI-VISA. Para acceder a la Ayuda de NI-VISA en el menú Inicio, seleccione Inicio»Programas»National Instruments»VISA»Ayuda de NI-VISA.
La clase ResourceManager proporciona funcionalidad para localizar, analizar y abrir clases derivadas de la sesión con nombres de recursos. Use Open para instanciar la clase derivada de la sesión apropiada dependiendo del nombre de recurso dado. Utilice Buscar para obtener una lista de nombres de recursos disponibles en el dominio de la aplicación, dada una expresión de búsqueda. Utilice Parse para obtener información adicional sobre un nombre de recurso.
Debe llamar a Disponer para liberar el recurso cuando ya no necesite acceder a él. Cualquier objeto derivado de sesión instanciado usando el método Open sigue siendo válido después de que se haya eliminado la instancia de ResourceManager.
La API NI-VISA .NET es similar a la API VisaNS y admite la mayoría de las características que VisaNS proporciona. VisaNS es la API de .NET heredada para VISA creada por NI antes de que la especificación estándar estuviera disponible. NI recomienda que utilice la API estándar NI-VISA .NET en lugar de VisaNS para cualquier aplicación nueva que desarrolle. El soporte para la API heredada de VisaNS se eliminará en una versión futura.
Además, es posible modificar las aplicaciones que utilizan la API VisaNS para utilizar la API estándar NI-VISA .NET en su lugar. Por ejemplo, las clases derivadas de Sesión admitidas en la nueva API se nombran de manera similar con constructores similares. Sin embargo, debido a que la nueva API implementa interfaces especificadas por la especificación IVI y utiliza varios tipos definidos en dicha especificación, los miembros reales de estas clases derivadas de la sesión son diferentes de los de VisaNS y, por lo tanto, requerirán cambios manuales en sus aplicaciones para migrar de VisaNS a NI-VISA .NET. En algunos casos, como la funcionalidad de E/S formateada, la API es significativamente diferente de VisaNS y puede requerir cambios más grandes para la migración.
Algunas características admitidas por la API de VisaNS no son compatibles o son compatibles de manera diferente en la API de NI-VISA .NET. A continuación se describen algunas de las principales diferencias.