2009-07-23 20 views
5

Tengo una aplicación de LabVIEW que actual envía datos a una aplicación C++ a través de una DLL. Ahora necesito enviar datos a la aplicación de LabVIEW desde C++. ¿Puedo activar código en LabVIEW desde una llamada a DLL o tendré que sondear la DLL periódicamente para ver si hay nuevos datos esperando?Acceso DLL asincrónico en LabVIEW?

¿O estoy haciendo esto de una manera completamente incorrecta?

Respuesta

6

Es posible generar un evento desde C++ para activar un evento normal de LabVIEW.
Here es una publicación de foros de NI que analiza esta estructura. Y un fragmento de código a partir de ese hilo:

#include <utility.h> 
#include <extcode.h> 
#include "EventDLL.h" 
//Generate a LabVIEW event 
int GenerateLVEvent(LVUserEventRef *msg, int param) 
{ 
PostLVUserEvent(*msg, (void *)&param); 
return 0; 
} 

Y aquí está el código fuente original como un archivo PNG: alt text http://vi-lib.com/forForum/eventDLL.PNG
Y aquí es el código de LabVIEW acompañante:
alt text http://vi-lib.com/forForum/eventLV.PNG
El bucle inferior es el código de LabVIEW que envía un evento DLL al controlador de eventos de LabVIEW. Esto debe colocarse dentro de su DLL. Uno de los parámetros de entrada debe ser el puntero de evento como U32.

Buena suerte,

Ton

PS si va hacer sumergirse en DLL y la interoperabilidad de LabVIEW, prestar atención a todo RolfK dice, él es un gurú en ese campo.

+1

Entre esto y los ejemplos de ocurrencia en el hilo enlazado, debería estar listo. ¡Gracias! – dwj

+0

Sí, una ocurrencia es una versión simple de eventos. –