在 TestStand 中以编程方式获取任何 TestStand 属性的名称

更新 Jul 29, 2024

适用于

软件

  • TestStand

问题详述

如何以编程方式获取任何 TestStand 属性的名称?当我查看 Expression Browser 中的 step 或 sequence 属性时,没有相关名称属性的字段。例如,如何获取当前步骤或序列的名称?

解决方案

您可以通过以下四种常见的编程方式获取任何 TestStand 属性的名称:
  1. 使用 NameOf()函数
  2. 使用 .Name 对象属性
  3. 使用 AsPropertyObject().Name 属性
  4. 使用 TestStand API

相关信息

要使用这些函数和对象属性,尤其相关的对象名称,您需要通过引用来获取。以下是一些属性路径的列表,这些路径引用了一些常见的属性对象。
属性 属性路径
Current Sequence File: RunState.SequenceFile
Current Sequence: RunState.Sequence
Current Step: Step 或 RunState.Step
Calling Sequence File: RunState.Caller.SequenceFile
Calling Sequence: RunState.Caller.Sequence
Calling Step: RunState.Caller.Step


使用NameOf()函数

如果您需要从 Step 中的  Expressions(例如 Pre- 或 Post-Expression)访问属性名称,则可以使用此函数。 NameOf()函数返回作为参数传递的任何属性对象名称。

您可以使用上述属性路径之一作为要传递的参数。例如,您可以使用以下Expression 来获取当前序列的名称:

Locals.MySequenceNameVariable = NameOf(RunState.Sequence)

其中MySequenceNameVariable是一个本地字符串变量,您可以定义它来保存当前序列的名称。

使用.Name 对象属性和 AsPropertyObject().Name属性
您可以使用 .Name 属性来访问任何属性对象或步骤的名称,例如上面列出的那些。

如果对象没有属性名称以便您可以使用.Name访问器,则可以使用 AsPropertyObject()方法将该对象转换为通用对象。该对象现在将具有名称属性,您现在可以使用.Name访问器访问该属性。下面是一个例子:
Locals.MySequenceNameVariable = RunState.Sequence.AsPropertyObject().Name 


使用 TestStand API
如果您需要从外部代码模块访问属性名称,您可以使用 TestStand API。首先,对于需要获取的名称属性,您需要通过引用获取相关对象,然后读取对象类中定义的 Name 属性。

例如,如果要获取当前序列的名称,则可以获取引用当前序列的属性对象。如果将序列上下文传递给代码模块,可以通过 ThisContext.Sequence 读取 Name 属性。有关如何使用 ActiveX 以正确访问这些属性的信息,请参阅您的编程环境帮助。

对于LabWindows/CVI,下面是获取对象引用然后获取该对象名称的示例:
TS_PropertyGetPropertyObject (testData->seqContextCVI, &errorInfo,"RunState.Sequence", 0, &CurrentSequence);

TS_PropertyGetProperty (CurrentSequence, &errorInfo, TS_PropertyName, CAVT_CSTRING, &SequenceName);