From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Programmatically get the sequence result

Solved!
Go to solution

Hi all,

 

in my custom operator interface i register the EndExecution event callback in order to accomplish several final operation.

 

What i cannot do is to retrive the sequence result ("Passed" or "Failed", exactly the one displayed in the default report under the voice "UUT Result") using API properties or methods.

 

I've alredy tried Execution.ResultStatus property and SequenceContext.SequenceFailed property, but none of them works.

 

How can i get the sequence result?

 

Thanks

0 Kudos
Message 1 of 11
(6,318 Views)

I am not sure if you can retrieve information about the UUT status when the execution is not running anymore.

I suggest you to use an UI message in your process model which forwards the UUT status to your UI.

The UUT status can be found in the local variable ResultList in your process model's Execution Entry Point (Test UUTs or Single Pass) in the following lookup string:

Locals.ResultList[0].Status

 

hope this helps,

Norbert 

Norbert
----------------------------------------------------------------------------------------------------
CEO: What exactly is stopping us from doing this?
Expert: Geometry
Marketing Manager: Just ignore it.
0 Kudos
Message 2 of 11
(6,315 Views)

I've spent hours trying to retrive the sequence result, but i haven't succeeded.

 

I found an alternative method to get it. It consists in creating a global "Boolean" variable, initializing it to "True" before the execution starts, using the AND boolean operator with it and with any of the sequence test step result (which i get every time a step has been completed via the "TraceEvent" callback) and displaying its value after the execution ends. If the variable value is still "True", none of the steps failed, if it is "False", at least one of the steps failed.

 

Ok, this method work... but this isn't what i want!

 

The fact is that i want to retrive the result directly (using API methods or properties), and not implicitly, from TestStand, without make any modifications in TestStand itself (for example adding steps to the sequence).

 

I really need help!!!

0 Kudos
Message 3 of 11
(6,255 Views)
Solution
Accepted by topic author aRCo

The process models already generate a "TestingComplete" UI Message that you can register an event callback on.  It also passes the result status as part of the string parameter.  The attached LV snippet show what the callback VI might contain to handle the event.  If you need to process other UI event codes you can wire the event number directly into the case structure the event code for "TestingComplete" decimal 34.

 

P.S. the event is the same as Norbert pointed out, UIMessageEvent Event...

 
 
Message Edited by paulmw on 11-08-2009 09:30 PM
Message Edited by paulmw on 11-08-2009 09:31 PM
Message Edited by paulmw on 11-08-2009 09:35 PM
Download All
Message 4 of 11
(6,246 Views)

One more thought...

If you need the UUT status for processing your final operations durring the EndExecution event callback I would suggest using the Event callback I described above and pass the status via the GUI (LabVIEW?) until the EndExecution event fires.  Take note that the status is of the UUT tested, most likely the last one executed unless you handle them all.  I point this out because the "execution" (for a Sequential Process Model) is generally all of the UUT's tested (from a Test UUT's entry point) unless you create seperate executions within your test sequence (i.e. the sequential process model - Test UUTs - has only one execution and loops for each UUT).

 

(P.S. An "execution" status does not equal a UUT test status)

Message Edited by paulmw on 11-08-2009 10:02 PM
Message 5 of 11
(6,239 Views)
1000 thanks paulmw. That defintely solved the problem!
0 Kudos
Message 6 of 11
(6,227 Views)
When I try to register for UI events I only get 10,000 and above. What are you using as an input to the user message. I am using the application manager. How should we register for the event?



Joe.
"NOTHING IS EVER EASY"
0 Kudos
Message 7 of 11
(6,202 Views)

Hi Joe_H,

follow these steps:

 

1 - Get a reference of the application manager.

 

2 - Pass that reference to the first input of the "Register Event Callback" property node.

 

3 - Click with the mouse left button on the first input and select "UIMessageEvent".

 

3 - Click with the right mouse button on the second input ("VI ref") and select "Create callback VI".

 

4 - Double click on the callback VI that has been created and edit its block diagram tha same way as paulmw suggested.

 

Now you should achieve your goal!

 

Register UIMessageEvent callback.png

 

 

Message Edited by aRCo on 11-09-2009 02:20 PM
0 Kudos
Message 8 of 11
(6,195 Views)

Joe, 

There is an event for the subset of user defined (10,000 and up) UI messages.  Maybe you are using this one?  Use this one if you only want custom user defined ones.  Use the UIMessageEvent for all of them including the User defined ones.

 

 

From the help...

 


UserMessage Event

Syntax

ControlName_UserMessage ( uiMsg)

Applies To

ApplicationMgr

Purpose

Occurs when an application component posts a user-defined UIMessage. A user-defined UIMessage has an event code value that is equal to or greater than UIMsg_UserMessageBase (value: 10000).

Parameters

uiMsg As UIMessage

[In] User-defined UIMessage object.

Message Edited by paulmw on 11-09-2009 02:42 PM
Message Edited by paulmw on 11-09-2009 02:43 PM
0 Kudos
Message 9 of 11
(6,191 Views)
That did the trick. Thanks Paul



Joe.
"NOTHING IS EVER EASY"
0 Kudos
Message 10 of 11
(6,172 Views)