Envíe o reciba datos binarios o hexadecimales usando NI-VISA en LabVIEW

Actualizado el May 6, 2020

Reportado en

Software

  • LabVIEW

Driver

  • NI-VISA

Detalles del problema

  • Mi aplicación requiere que envíe y reciba valores binarios o hexadecimales, en lugar de caracteres ASCII, pero las funciones VISA Read y VISA Write en LabVIEW solo aceptan strings como tipos de datos válidos. ¿Cómo puedo usar datos binarios o hexadecimales con las funciones de LabVIEW VISA?
  • Me gustaría transmitir datos hexadecimales a un instrumento de terceros usando LabVIEW. ¿Cómo puedo hacer esto?

Solución

Para enviar datos binarios o hexadecimales, primero debe convertir los datos al formato de string, para que puedan pasar a la función VISA Write. Del mismo modo, el valor de string proporcionado por VISA Read se puede convertir al formato de salida deseado. Mientras que las funciones de LabVIEW VISA requieren que se use un valor de string como entrada y salida de datos, los valores de caracteres en un string no están restringidos a caracteres ASCII estándar. Cada carácter es un entero de 8 bits sin signo (U8), con valores posibles que varían de 0 a 255.

Existen varios métodos que se pueden usar para transmitir valores binarios, según el formato de los datos de origen:
  • Transmit constant hexadecimal values, and display received data in HEX format.

La forma más sencilla de transmitir un valor hexadecimal (hexadecimal) constante es usar una constante de tipo string, con la constante configurada para la visualización hexadecimal (configurable haciendo clic derecho en la constante y seleccionando Display Format ...). Esto le permitirá escribir los valores hexadecimales de caracteres no ASCII en un control de string o constante, que luego se puede pasar directamente a la función VISA Write. Al leer datos con VISA Read, el string se puede conectar directamente a un indicador de string en modo de visualización hexadecimal para mostrar los valores hexadecimales en el panel frontal.

Transmitir y recibir valores hexadecimales constantes:
  • Transmit U8 integers (single value or array).

Para transmitir un solo byte de datos (entero U8), la función Build Array debe usarse para formar una matriz con un solo elemento. El operador Byte Array to String se puede usar para crear un stringg que sea compatible con VISA Write. Se puede usar el mismo procedimiento para transmitir una matriz de bytes, con la excepción de que Build Array no es necesario.
Transmita y reciba un solo entero U8:

Transmita y reciba un conjunto de enteros U8:
  • Transmit a non-U8 value or an array of values.

Cuando los datos binarios a transferir son mayores que un solo byte, es necesario primero encasillar el valor o la matriz en una matriz U8, luego convertir esta matriz en un string que sea aceptable para VISA Write. Las mismas operaciones se realizan en orden inverso para convertir el string adquirida de VISA Read en un tipo de datos binarios. Esto se puede usar con elementos de datos individuales o con matrices de elementos.

Transmitir y recibir un valor de varios bytes:

Nota : Cuando se trabaja con tipos de datos binarios mayores de un byte (I16, U32, DBL, etc.), la endianidad (orden de bytes) del dispositivo remoto puede convertirse en un problema. LabVIEW es nativamente Big Endian, por lo que la comunicación con dispositivos Little Endian requerirá cambios en el orden de bytes de los elementos de datos.