05-15-2006 10:32 AM
05-16-2006 12:27 PM
Hi Srini,
It seems that this behavior is possibly resulted from the Station Options >> Execution Tracing settings. Try unchecking all the options and see if you still see the same behavior. We have not been able to reproduce this behavior back to back but sometimes when checking the various station options. Also, let me know which options you do have set and what steps you are going through to produce the behavior. Thanks
Hope this helps!
Best Regards,
05-17-2006 01:09 AM
05-17-2006 12:58 PM
Hi MadhuSri,
I am not sure what language you are working in, but to fix your issue you will need to create an event callback for the Break command that is generated by the ExecutionView Manager. The data that is passed into this event will contain the execution, sequence context, and thread object. From the sequence context you can get the IsProcessModel property to see if the sequence that is executing for the sequence context is within the process model sequence file. If so, then call the ExecutionView Manager method, SetStepOut that sets the execution to suspend again after execution of the current sequence completes. So, for example in C# the code would say
If (e.ctxt.IsProcessModel)
{
e.exec.StepOut();
}
For LabVIEW, see the attached screenshot.
This should fix your issue.
Hope this helps!
05-19-2006 12:14 AM
Hi Jonathan,
thanks for the solution. It worked out the way i expected.
Thanks and Regards,
MadhuSri
06-29-2006 05:06 PM
Jonathan,
Very nice description of how to do this! From this I was able to implement it using CVI.
For CVI, the registration and callback function would look like this:
errChk( TSUI__ExecutionViewMgrEventsRegOnBreak (gMainWindow.executionViewMgr,
ExecutionViewMgr_OnBreak, NULL, 1, NULL));
HRESULT CVICALLBACK ExecutionViewMgr_OnBreak (CAObjHandle caServerObjHandle,
void *caCallbackData,
TSUIObj_Execution exec,
TSUIObj_Thread thrd,
TSUIObj_SequenceContext ctxt)
{
int error = 0;
ERRORINFO errorInfo = {0, 0, "", "", "", 0, 0};
ErrMsg errMsg = "";
VBOOL isProcessModel = VFALSE;
tsErrChk( TS_SeqContextGetIsProcessModel (ctxt, &errorInfo, &isProcessModel));
if (isProcessModel)
{
tsErrChk( TS_ExecutionStepOut (exec, &errorInfo));
}
Error:;
DisplayError(error, errMsg);
return S_OK;
} // ExecutionViewMgr_OnBreak