10-16-2007 07:35 PM
10-18-2007 01:02 PM
Evan Prothro
RF Systems Engineer | NI
10-18-2007 05:59 PM
10-22-2007 10:24 AM
Hans -
The database logging feature maintains a stack of primary keys while TestStand recurses through the results. The types of foreign key relationships that TestStand logging supports are:
There is no provision to allow two different steps to reference each other unless one of the steps is a sequence call to a sequence that contains the other step.
Does this help explain the behavior that you are seeing because I am not sure I understand you use case?
10-22-2007 01:26 PM
Hi Scott,
I think we're on the right track to finding out what is going on. I've created a stripped down sequence file example of what we're trying to do. Please see the attached file.
The hierarchy of the sequences and steps are:
Main Sequence
Contains one or more Instances of a TestCase step type (one instance in the attached example seq)
Each TestCase Instance
Contains one or more instances of VisionVerify step types (two instances in the attached example seq)
Each VisionVerify Instance
Contains one instance of a VerifyImage step type (in our actual use, the VerifyImage step type would be a LabVIEW VI call, but to simplify this example I set the adapter of the VerifyImage step type to None)
The idea is that a Top Level sequence will have one or several TestCase sequence calls, which each can have one or more VisionVerify step calls, which each have one VerifyImage step call. We want to record the results in our database. We need to tie the VerifyImage step results to their parent TestCase result.
When I run this example sequence using the single pass entry point of our process model, I see the same problematic behavior - the foriegn key in the step_verifyimage table is null. That prevents tying the VerifyImage results back to their parent TestCase result.
It seems like our desired foreign key relationship is:
A foreign key of a step of a specific type (VerifyImage) referencing a primary key of a sequence call step (of type TestCase) that calls a sequence (of type VisionVerify) that calls the VerifyImage type.
Our situation does not quite meet the above mentioned criteria that "There is no provision to allow two different steps to reference each other unless one of the steps is a sequence call to a sequence that contains the other step." In our case, one of the steps in MainSequence is a sequence call to a TestCase sequence that contains a sequence call to a VisionVerify sequence that contains the other (VerifyImage) step. We have an extra sequence call in the relationship.
Since our primary key should still be available in the stack, albeit another level up, I'm hoping there is a way for us to accomplish our goal.
Thanks for your help,
Hans
10-22-2007 01:28 PM
Oops, I attached the wrong file. Sorry about that. Here's the example sequence file.
Hans
10-25-2007 10:05 AM
10-25-2007 05:06 PM
10-26-2007 10:01 AM
Hans -
There are SDK functions, so the C++ equivalent is:
GUID guid;
RPC_STATUS rStatus;
unsigned char * string;
rStatus = ::UuidCreate(&guid);
::UuidToString(&guid, &string);
::RpcStringFree(&string);
The Header Declared in Rpcdce.h; include Rpc.h.
Library Link to Rpcrt4.lib.
DLL Requires Rpcrt4.dll.
10-26-2007 01:15 PM
Hi Scott,
Thanks for the reply but I'm not sure how to use that info. I'm not using C++, C#, or LabWindows, so I'd really like to have something I can invoke directly from TestStand or LabVIEW. Something we could call using ActiveX, directly from a existing DLL, or from an exe that runs from the command prompt would be much easier because I would not have to set up a whole additional development environment just to create a method generate a GUID.
Thanks,
Hans