TestStand Sequence Thread Termination

I have created a Sequence which launches a VI to run in a parallel/background thread. This sequence gets called in my Main Sequence. In my Main Sequence, I'm trying to figure out how to terminate the background thread after the main sequence has completed all of its actions. The background thread has no pass/fail criteria, its is essentially a polling VI which is supposed to share a Queue which contains data telling the VI what to do.
Before trying to implement this into Teststand, I successfully created an application which launches a background VI using VI server. Using Queues, I'm able to terminate and pass data to the VI running in the background from the Main VI. I'm essentially using the same approach in Teststand with no success in being able to terminate the parallel thread. Can parallel threads use the same Queue reference?
Thanks
Peter.

Hi Buzz,
Here's an example I was using awhile back to demonstate a problem. But it might help you in your solution.
The example starts a dialog panel in a new execution. The MainSequence carries on and does something else.
The user has the option to press the button on the dialog to close the new execution, or the mainsequence will come to an end then terminates the new execution.
Hope it helps
Regards
Ray Farmer
Regards
Ray Farmer
Attachments:
StopNewExecution.seq ‏41 KB

Similar Messages

  • I am trying to have some LabVIEW code called in a New thread exit when the testStand sequence terminates

    I have a Sequence that launches a sequence in a New Thread that happens to launch some LabVIEW code.  The problem is when the LabVIEW code finishes, it will not close even when the TestStand sequence terminates. Is there a way to tell this LabVIEW code to Exit, I've tried the Quit LabVIEW function, but that causes a C++ RunTime Error.  The LabVIEW code does end though, and it is set in the VI properties to:
    Checked - Show Front Panel When Called
    Checked - Close Afterwardds if originally closed
    The sequence call that the LabVIEW code is launched from has the following options:
    - New Thread
    Unchecked - Automatically wait for the thread to complete at the end of the current sequence
    Unchecked - Initially Suspended
    Unchecked - Use single threaded apartment
    Any clues on this would be appreciated.

    Hi ADL,
    Everything should close correctly if you check the checkbox "Automatically wait for the thread to complete at the end of the current sequence" in the thread settings.
    With it unchecked, I am seeing the behavior you are. 
    Gavin Fox
    Systems Software
    National Instruments

  • How to call a python script from a TestStand sequence?

    Please tell me how is it possible to call a python script from a TestStand sequence.
    Thank for your help in advance.
    Imre

    Here you can find some information about Python and LabVIEW:
    http://forums.ni.com/ni/board/message?board.id=170​&message.id=124424&query.id=149647#M124424
    If you have LabVIEW, you could use LabVIEW steps to call your Phyton Scipts.
    Another solution would be, to do, what is decriibed in the thread directly in TestStand:
    You can call a dll or .NET assemblies directly from teststand, or use the "Call Executable" TestStep.

  • MessagingException: Sequence already terminated (soft).

    Hi,
    I'm getting the following error after the execution of an IDoc>SQL interface.
    The queue shows "XI Error ERROR_OBJECT.INTERNAL: Queue stopped" in FM SXMS_ASYNC_EXEC.
    The message with error, in SXMB_MONI, says:
    <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException:
    Sequence already terminated (soft).</SAP:AdditionalText>
    Does anyone ever faced this error?
    Tks.
    Rafael.

    Hi,
    The Queue sequence has terminated in PI,
    Login to Messaging System http://<host>:<port>/MessagingSystem/monitor/monitor.jsp
    Check EOIO Sequence Monitor..
    Change the Date range according to your message processed date, Queue name can be viewed with status "Terminated".
    To resolve your issue, assign a exclusive queue name in sender communication cahnnel or if you already using a queue name, change it to different name.
    Let me know if this resolved your issue.
    PS: Actually i had the same issue, i am searching SDN  on "how to activate Terminated queues" , i saw your thread. This might fix the problem. But still i am searching on Activating termiated queues.
    Thanks
    Vijay Poreddy
    Edited by: Vijayanand Poreddy on Feb 17, 2012 5:55 AM

  • Programatically select a step in a sequence in a sequence file loaded in TestStand sequence editor using C#

    Hi all,
    I have written C# code to load a sequence file dynamically in TestStand Sequence editor. The code is as follows...
    myEngine.PostUIMessage(mySequenceContext.Execution, mySequenceContext.Thread, UIMessageCodes.UIMsg_OpenWindows, 0, null, mySequenceFile, true );
    The code is working fine and I could view the Sequence file opened in TestStand Sequence editor.
    Now, I wish to select one sequence in the opened sequence file to get the details of  the sequence programatically. In other words, I want to simulate a mouse click to a sequence and view the steps associated with that sequence.
    Can anybody give some clues...
    Thanks in advance.

    Hi,
    Also I am getting error like "Index out of range. Source:  TSUISUPP.SelectedSteps   at NationalInstruments.TestStand.Interop.UI.Support.SelectedSteps.AddStep(Step val)". Error code: "-17500; Operation Failed." My code is like
    mySequenceFile = myEngine.GetSequenceFileEx(@"D:\dynamic loaded sequence.seq", 0, TypeConflictHandlerTypes.ConflictHandler_UseGlobalType);
    mySequence = mySequenceFile.GetSequenceByName("First");
    Step myStep = mySequence.GetStep(2, StepGroups.StepGroup_Main);
    SequenceContext mySequenceContext = mySequenceFile.NewEditContext();
    mySequenceContext .AsPropertyObject();
    myEngine.PostUIMessage(mySequenceContext .Execution, mySequenceContext .Thread, UIMessageCodes.UIMsg_OpenWindows, 0, null, mySequenceFile, true);
    ApplicationMgr applicationMgr = (ApplicationMgr)myEngine.GetInternalOption(InternalOptions.InternalOption_ApplicationManager);
    SequenceFileViewMgr sequenceFileViewMgr = (SequenceFileViewMgr)applicationMgr.GetSequenceFileViewMgr(mySequenceFile);
    sequenceFileViewMgr.SelectedSequences.Clear();
    sequenceFileViewMgr.SelectedSequences.AddSequence(mySequence);
    sequenceFileViewMgr.SelectedSteps.AddStep(myStep);
    I am sure that my Sequence selected in the Sequence file loaded has more than 2 steps. Please help me in solving this problem and that in the previous post.
    Thanks,
    Biju kuttan

  • How can I run a step only if TestStand not is terminated?

    I want to run a step I Cleanup only if TestStand not is terminated. Is there a variable I can read who tell this?

    Jan Inge -
    I did not know whar version of TS you are using so I created the sequence using TS 2.0.
    In the example a save the state to the numeric result of a numeric limit step and the step determines that execution is normal if the state is 1, so the step passes, otherwise it fails. The precondition of the next steps use the pass/fail status of the first step. This way you do not need a local variable.
    Scott Richardson (NI)
    Scott Richardson
    National Instruments
    Attachments:
    CleanupStepNotRunDuringTermination.seq ‏30 KB

  • Teststand New Thread VS LabVIEW "Call & Forget" Asynchronous call

    Hi everyone,
    Here is an example taken from the ni.com website showing how to use LabVIEW to post a TestStand Notifier.  I have modified the example to fit the situation I needed to use it for.  I have an example which works fine (When I use a TestStand new thread to launch the Notifier VI) and an example which does not work (When I use a LabVIEW "Call & Forget" Asynchronous call to launch the Notifier VI).
    I would like to understand why it doesn't work in the second situation. The reason why I would prefer the 2nd situation which currently doesn't work is that I try to eliminate all multi-threads from an obsolete sequence written by someone else a few years ago so that I can troublesoot it and update the code to make it work with today's new reality.
    Also, for my personal knowledge.  I don't understand why the second strategy doesn't work.  The Testsand notifier reference is the same and hadled the same way.  I have included my example files with the 2 situations in seperate sequences files.
    Thanks in advance to the person who will be able to enlight me.
    Nien 
    Solved!
    Go to Solution.
    Attachments:
    New Thread Or Dynamic Call.zip ‏41 KB

    Hello Nien,
    This isn't a TestStand issue.  I suggest you take this to the LabVIEW forum.  Looking over your code your Notifer and Forget.vi is dependent on the notifier.vi.  So it's not necessarily anything wrong with the sequence steps but actually within your LabVIEW code itself.  One suggestion is to insert a simple error handler.vi in your Call Notifier and Forget.vi.  You have error wires connected to the functions itself, which is good practice but you don't have anything to inform you if an error occurs or not.  I would suggest you to run try to debug your LabVIEW code, such as using highlight execution, while you're running your code so you know where exactly the error is happening.  
    Thanks,
    Jonathan R.
    Applications Engineer
    National Instruments

  • How to create a local object reference variable in teststand sequence file programatically using C#

    I want to create a local object reference variable in a TestStand sequence file programatically using C#.

    Hi,
    Accoring to your reply in this Thread
    http://forums.ni.com/ni/board/message?board.id=330&thread.id=26984
    Just try this example. There you will create a numeric variable during excuting a sequence!
    Hope this is what you are looking for. 
    Please attach all your questions here.
    juergen
    =s=i=g=n=a=t=u=r=e= Click on the Star and see what happens :-) =s=i=g=n=a=t=u=r=e=
    Attachments:
    CTestStandDialog.zip ‏31 KB

  • Control LabVIEW GUI via TestStand sequence

    Hello,
    I have a VI with several buttons(controls) that the user can change during the test.
    How can I associate these buttons(controls) with TestStand sequence so that during the sequence depending on a variable I set In TestStand the buttons(controls) in the VI will be activated.
    Thank you,
    Lev Kolomiets

    Lev,
    Are you talking about your User Interface?  Or is it just a VI that you call from your test sequence?
    If it's the User Interface then you should use UI Messages.... (Google or Bing: TestStand UI Messages.  let me know if you have more questions on that).
    If it's a VI you call in a different thread from your test sequence then you will want to pass in the sequence context.  Then you can use the VIs on the TestStand palette (specifically TestStand - Get Property Value.vi). 
    Hope this helps some,
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Execution of TestStand-Sequence in LabVIEW via TS-API: Different Execution times for same sequence

    Hello Forum-Members,
    I have a problem concerning the execution of an TestStand-Sequence in LabVIEW. I have created a VI that offers the ability to choose a TestStand-Sequence-File and then executes the sequence using the TestStand-API. The implementation is based on an example in C++-Application found following this link:
    http://forums.ni.com/t5/NI-TestStand/Unreleased-references-using-engine-API-in-C/m-p/2927314#M46034
    The implementation works quite solid in case the VI is executed the first time. The VI processes the chosen sequence in a acceptable duration.
    But in case the execution is started a second time, the execution of the sequence takes ca. 30sec more than in the first case.
    Until now I have not found a solution and hope someones got a hint concerning this problem...
    I am using LabVIEW 2013 and TestStand 2013.
    I have attached my own VI, a sample sequence with a small sample VI, so you can reproduce the problem.
    Kind regards,
    TobiKi
    Solved!
    Go to Solution.
    Attachments:
    Exe-TestStand-Sequence.vi ‏25 KB
    Sequenz.vi ‏8 KB
    Test-Sequenz.seq ‏5 KB

    Hi Norbert,
    first thanks for your answer.
    What would be a reasonable way to replace the "Execution.WaitForEndEx"? My first idea is to get the respective thread of the execution and use the "Thread.WaitForEnd".
    To clarify my problem:
    The execution of the sequence itself takes longer time and so the execution of the calling VI. I have attached pictures of the log file of the first and second execution.
    Further I don't get any dialog popups during the shutdown of TestStand. (I have activated the "ReportObjectLeaks" using the "DebugOptions") While developing the attached VI I've gotten several popups. But these popups disappeared after closing all references.
    Maybe you have another hint how to locate the problem.
    TobiKi
    Attachments:
    FirstExecution_20-08-2014.png ‏16 KB
    SecondExecution_20-08-2014.png ‏16 KB

  • Multi-thre​aded Sequences,​Threads and tracing

    Am writting a custom OI in LabView. Got a issue which is causing a fair amount of head ache. I'm using the trace message to find out what is executing and displaying the data in the appropriate form.
    However, I've notice that when sequences go off and execute in thir own threads(Multithreaded - 'Run Sequence in New Thread') there doesn't appear to be any trace messages coming back from thouse spawned threads. I've had a good look at thi but still can;t seem to figure out why.
    Basically I need those trace messages.....

    Wojtek -
    The default operator interfaces only support tracing one active thread at a time. Each operator interface has a thread control that allows you to switch between threads.
    There is an option ExecMask_TraceAllThreads which specifies to send trace events for all running threads in an execution. This option can be set on Engine.NewExecution, but keep in mind that the OI must be able to support this option. When the TestStand sequence editor and operator interfaces launch new executions, they do not set this option.
    Scott Richardson
    National Instruments

  • LabVIEW VI with Report Generation Toolkit elements in a TestStand sequence does not run with a LabVIEW 8.5 Run-Time Engine

    Hi all,
    I am using LabVIEW 8.5.1 and TestStand 4.1. I have done a TestStand sequence with a VI in it, which uses Report Generation Toolkit elements. On my machine I am using LabVIEW and TestStand with a Development System license. On the other machine I am using TestStand with a Base Deployment license and I have chosen the LabVIEW 8.5 Run-Time Engine in the Adapter Configuration. Everything is running well except of this VI with Report Generation Toolkit elements. The error message is showing that the VI is not executable. It works well only after I have installed LabVIEW with an Evaluation license and chosen LabVIEW 8.5 Development System in the Adapter Configuration.
    I have found other posts and a document in the KnowledgeBase with a similar problem: http://digital.ni.com/public.nsf/allkb/8A0E6274D9B​D7B1986256F62006AD402?OpenDocument But I am not using EXE files in my sequence, so I don't know how to solve mine. Anybody has an idea?
    Solved!
    Go to Solution.

    Hello guys,
    thank you very much for your answers!
    @Ruediger:
    I tried to follow the instruction for Method 2 in the mentioned document: http://digital.ni.com/public.nsf/allkb/F3DC40A6E3F​3B25B862570AD005D1D3D?OpenDocument, but the steps on my machine are different starting from step 4. After I click "Continue..." in step 3, I dont get a window, the system just makes a new folder with the same VI. 
    To be honest, I am new to LabVIEW and have some difficulties at this time. What I understood from your reply is, that I need to make a LLB-File, where the files from Report Generation Toolkit are in!?
    @GovBob:
    I was following the instruction in the document: http://digital.ni.com/public.nsf/allkb/9E00E7EFE06​35E678625734600779EFE, but it wasnt working. Can you please tell me how I can check if the VI Server is installed and running on the machine?
    I am using LabVIEW 8.5.1 and TestStand 4.1 on my machine, on the deploy machine there is TestStand 4.1.1. The version of my Report Generation Toolkit is 1.1.2.
    Kind regards, Roman

  • Is it possible to call a VI that is inside a LabVIEW executable from a TestStand sequence?

    I have created a custom TestStand operator interface and have modified the default sequential process model to display a UUT information dialog that prompts for more information than just the UUT serial number.  This UUT information dialog is a LabVIEW VI.  To distribute the operator interface, I build it into an executable.  As part of the build process, I make a copy of the UUT information dialog VI (which is part of my operator interface project) and place it in the same folder as the executable.  I have then configured the sequential process model to call the dialog VI from this location.  It would be really nice if I could embed the UUT information dialog VI inside the operator interface executable so that I could distribute just an executable instead of an executable and separate VIs.  Is this possible?  In other words, is it possible to call a VI that is inside a LabVIEW executable from a TestStand sequence just like a standard LabVIEW VI call?

    Ryan,
    The dialog that you've created isn't being directly called by the OI at all and shouldn't need to be included in the same directory as the OI for distribution. Since you are modifying the PreUUT of the default process model, you will give the path to the VI in that step, create a deployment and then manually copy the VI to the directory referenced in the step. The VI is considered a support file for the process model and is not related to the OI at all.
    Test Engineer - CTA

  • How do I find the path to a TestStand sequence file using LabVIEW

    My LabVIEW application launches a bunch of teststand sequences, provided it has the complete path to each of them. I want to make it more flexible by providing it just the name of the TestStand sequence so that it will go and find the path to the sequence by searching a directory structure. TestStand has a neat FindFile() function that can do this, but I need to do this from within LabVIEW. Is there a way to do it?

    There are a few ways to do this depending on how you are getting the sequence files.  If you are calling the GetSequenceFileEx method, you can just pass the GetSeqFile_FindFile (0x20) flag in the SequenceFileFlags property.  If you are using the ApplicationMgr.OpenSequenceFile method, this is automatically done for you.
    If you want to use the FindFile function in general, you can use the Engine.FindFile method.
    Allen P.
    NI

  • Finding the name of my teststand sequence in the process model

    I would like to be able to find the file path and name of a teststand sequence in the process model. I have created a simple vi which will display this information when run in a sequence. If i insert the vi into the process model, the file path and name returned is that of the process model and not the sequence under exectution. Is there a way of extracting this information in the process model?

    Davepar -
    If you are executing in the process model you can use the following as a lookup string if you are in the root context "RunState.ProcessModelClient.Path" or "RunState.Root.RunState.ProcessModelClient.Path" if you are not in the root context.
    Scott Richardson (NI)
    Scott Richardson
    National Instruments

Maybe you are looking for