08-26-2008 06:30 AM
How to obtain reference to Sequence object from within pre-step substep of Sequence Call based custom step type?
Given: new custom step type which based on NI Sequence Call step type. There is Pre-Step substep exist for this step type.
How to get reference to Sequence object representing Sequence which will run?
Although there is possible to examine SequenceAdapter and SequenceCallModule properties, it seems redundant since module (Sequence) is already loaded by TestStand ("NI TestStand Reference Manual. Table 3-4. Order of Actions that a Step Performs" Action #6, while my code is running as Action #13).
Thanks.
Misha
08-26-2008 07:24 AM
Could you explain what you want to do ?
Why do you want to get the sequence object within a pre-step substep ?
I give you some informations but I don't know if it's the better way to do what you want (because I don't know what you want to do with the sequence object).
If the substep uses the ActiveX adapter :
You can get the sequence object but you should save the object reference in a StationGlobals variable.
And you should release the object reference within your sequence when you don't need it any more.
If the substep uses another module adapter:
Get the step module, then the sequence name (module property).
Then get the sequence object by the sequence name from the sequence file.
Here are the paths to use for both methods :
Sequence Name property path : Step.Module.SeqName
Sequence Object path : RunState.SequenceFile.GetSequenceByName (seqname)
08-26-2008 07:46 AM
Bruno,
The substep uses the C/C++ DLL adapter, but it doesn't matter.
As I stated, there is no problem to get "SequenceFilePath", "SequenceName", "SpecifyByExpression" and "UseCurrentFile" of corresponding "SequenceCallModule" object, process them, and then call "SequenceFile.GetSequenceByName()". But this is what TestStand do, when it loads the module, therefore TestStand should keep the reference to Sequence object ready-to-use. And I want to get this reference without additional effort.
Thanks.
Misha
08-26-2008 08:53 AM
Hi,
RunState.SequenceFile is the object of the currently loaded sequence file, therefore, if you wanted to launch a sequence from MainSequence while it is running then you can call TS API Engine.NewExecution(RunState.SequenceFile, "MySequenceToRun", Nothing, False,0,,). But normally you would just use a SequenceCall Adapter set to run in New execution.
Hope this helps
Regards
Ray Farmer
08-26-2008 09:25 AM
Ray,
I don't want to launch no executions. I need to get reference to Sequence object.
Thanks.
Misha
08-26-2008 10:56 AM
mishaw,
I don't know of a way to directly get the reference to the sequence module that TestStand has already loaded. The only way that I found was to use what you had done: use the options of the SequenceCallModule to load the SequenceFile and then get the Sequence.
What are you trying to accomplish? If we could discuss what you are trying to do, mabye there is a better way to implement it.
08-26-2008 11:44 AM
Josh,
My task is to create step type similar to NI SequenceCall which should run only once during test session (unless "Unload All Modules" command executed or TestStand shutdown).
I added Pre-Step and Post-Step substeps(code is attached) to the copy of NI SequenceCall.
I would highly appreciate, if you show me the better way to implement it or improve my code.
Thanks.
Misha