Error -1073807298 Se Produce Después De Un Read / Write De VISA

Actualizado el Jan 2, 2020

Reportado en

Controlador

  • NI-VISA

Detalles del problema

Estoy tratando de escribir y leer desde un instrumento utilizando NI-VISA, y continúo obteniendo Error -1073807298 (Hex 0xBFFF003E) occurred at an unidentified location. ¿Por qué está pasando esto?

Solución

1. Asegúrese de que su código abra y cierre todas las referencias de sesión de VISA. La mayoría del código de VISA LabVIEW seguirá el patrón:
  1. Abra la referencia de VISA
  2. Realice lecturas y escrituras
  3. Cierre la referencia de VISA.
Para ver un ejemplo de esta estructura de código, vea el programa de ejemplo Simple Serial.vi en LabVIEW yendo a Help >> Find Examples.

2. Asegúrese de que no haya procesos que interfieran con los puertos de I/Ode su dispositivo (I/O de Modbus, I/O Servers, etc.). Puede verificar esto en Distributed System Manager.

3. El problema puede provenir de la solicitud de VISA Write IRP_MJ_FLUSH_BUFFER que causa una respuesta de INVALID DEVICE REQUEST del dispositivo. De forma predeterminada, a cada Write y Read de VISA le sigue una llamada VISA Flush cuando se comunica a través de RS-232. Puede cambiar la configuración del búfer de VISA para evitar que VISA ejecute la llamada de descarga para evitar este error.

Si llama a la función Set I/O Buffer de VISA al principio de su aplicación (después de lVISA Open, antes de cualquier read o write) y configura la máscara a 48 (16 + 32, donde 16 es la máscara para recibir el búfer de recepción y 32 es la máscara para el búfer de transmisión) y el tamaño en algún valor entre 4k y la mayor cantidad de datos que esperas leer o escribir, hará que el comando Flush no se ejecute.


IMPORTANTE: asegúrese de establecer el límite superior cuando los establezca. Si no es lo suficientemente grande como para que los datos que está transmitiendo o recibiendo puedan hacer que su computadora se bloquee.

Información adicional

Si no llama a la función Flush, NI-VISA segmentará todas las escrituras en segmentos de 500 milisegundos y llamará a la descarga después de cada escritura. Al decirle a NI-VISA que nunca usará más de 4k o el valor al que establece el tamaño, NI-VISA a su vez no llamará al ras.