Estoy familiarizado con la escritura de archivos DLL que se pueden llamar desde LabVIEW, pero tengo curiosidad sobre cuál podría ser la forma correcta de pasar IMAQ Images a una DLL. He aquí una forma de hacerlo: también uso un mecanismo similar para publicar instancias de IMAQ Image desde mi DLL a una estructura de evento.LabVIEW, C++ DLL, e IMAQ Images
Nota que los nodos que convierten las instancias de la imagen a/de los grupos se encuentran en ${LABVIEW_INSTALL_DIR}/vi.lib/vision/DatatypeConversion.llb
, y se denominan IMAQ Image Datatype to Image Cluster.vi
y IMAQ Image Cluster to Image Datatype.vi
, respectivamente. El clúster que se crea consta del nombre de la imagen y un valor entero que representa la dirección del puntero a un tipo Image*
en C/C++.
¿Es esta la mejor manera de hacerlo, o hay una manera mejor?
Un problema que puedo ver es que el nodo de conversión está dando U32. Si está en 64 bits puede haber problemas ... – CharlesB
Sí, me di cuenta de que eso está sucediendo porque estoy definiendo el parámetro para que la llamada a la función en la DLL sea un 'Entero de tamaño de puntero '. Dado que estoy operando en un entorno de 32 bits, esto no me afecta directamente; sin embargo, es curioso que una salida de 32 bits sea el caso, ya que estoy ejecutando NI Vision 2011, que se pretende tiene soporte de 64 bits. Mirando el resultado del clúster anterior, eso no parece ser completamente cierto ... – hatboyzero
OK, estoy bastante seguro de que en un entorno de 64 bits da un puntero de 64 bits – CharlesB