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