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:
- Abra la referencia de VISA
- Realice lecturas y escrituras
- 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.