Pasar el Clúster de Error de un DLL de LabVIEW a Test Stand.



Software Primario:
Versión de Software Primario: 4.0
Versión de Software Primario Corregido: N/A
Software Secundario: LabVIEW Development Systems>>LabVIEW Professional Development System

Problema:
He visto que es más rápido utilizar el adaptador de DLL que el de LabVIEW en mis pruebas y quiero usar todos mis VIs como DLL para lograr una mejor velocidad. ¿Cómo puedo pasar el clúster de error de LabVIEW cuando construyo DLL a TestStand?


Solución:
Para enviar el clúster de error de del DLL creado en LabVIEW a TestStand, lo primero es verificar que el DLL este creado con una convención de llamada estándar. Esto se configura cuando estas creando el DLL en LabVIEW. Cuando se configura el prototipo ahí  se selecciona la opción Standard CallIng Convention.
El siguiente paso para comunicarnos con este DLL de LabVIEW es definir un tipo personalizado (CUSTOM TYPE) en TestStand al cual vamos a pasar los datos del error. En general, dentro de TestStand, los clústers de LabVIEW son representados por un contenedor  y elementos de los datos se tienen en TestStand.  En este caso se necesita  generar un contenedor que tenga un booleano, una cadena  y un entero.
Para crear el tipo para usar con el error:
Vaya a la ventana de Tipos (Ctrl + T)
Asegúrese de Seleccionar Custon Data Types
1.De click derecho en la Lista de Types,  y seleccione Insert Custom Data Type»Container  y nómbrelo Error_LabVIEW
2. Ahora en este contenedor genere:
·          Un Boleano y llámelo status
·          Un numeric y llámelo code
·         Una cadena y llámela source
3. De click derecho en el nuevo Type que creaste y selecciona Properties. Ahí selecciona la pestaña de C Struct Passing
4. Habilita la opción de Objects of This Type to be Passed as Structs
5. Cambia el empaquetamiento (Packing) a 1 Byte Boundary
6. Selecciona el tipo de dato adecuado para cada uno:
·         Unsigned 8-bit integer para status
·         Signed 32-bit inger para code
·         LabVIEW String para source
 En TestStand genere un nuevo paso con llamada al adaptador de C/C++ DLL y especifique el modulo que quiere llamar. En la venta de de Edit C/C++ DLL Call:
Seleccione el DLL de LabVIEW
Seleccione el nombre de la función que quiere llamar. Aquí va a salir un mensaje advirtiendo  que no se encontró información sobre el prototipo de la función.
Edite los parámetros del prototipo. Y para el clúster del error seleccione en categoría C Struct  , luego indique que es Error_LabVIEW y en como pasar el parámetro seleccione By Pointer.
En forma adicional si quiere que ese error lo tome como el error del paso agregue las siguientes expresiones en Post Expression:
Step.Result.Error.Occurred=Locals.errores.status, Step.Result.Error.Code=Locals.errores.code, Step.Result.Error.Msg=Locals.errores.source
Nota: En el Zip esta un ejemplo con la llamada a un DLL, este también tiene ligado el la variable al error del paso. El tipo de dato de error de LabVIEW está definido localmente en la Frecuencia


Ligas Relacionadas:

KnowledgeBase 3KPBEO73: Calling Functions, in a C/C++ DLL, that have a C Struct as a Parameter from TestStand
Developer Zone Tutorial: Building DLLs in LabVIEW 6.x or later Can I Improve TestStand Performance by Using LabVIEW DLLs instead of LabVIEW VIs?



Archivos Adjuntos:
EjemploError.zip




Día del Reporte: 03/05/2008
Última Actualización: 05/29/2009
Identificación del Documento: 4J48BAYN