通过编程在TestStand中得到任何TestStand属性的名称



主要软件:
主要软件版本: 1.0
主要软件修正版本:
次要软件: N/A

问题: 我该如何通过编程得到任何TestStand属性的名称(比如一个步骤或序列的名称)?例如,我该如何得到当前步骤或序列的名称?当我在表达式浏览对话框中查看步骤或序列的属性时,里面并没有一个名称的属性所在。

解答: 通过编程,这里有两种通常的方式可以得到任何TestStand属性的名称(比如一个步骤,序列或者序列文件的名称)。你可以使用NameOf()函数或者TestStand API。无论如何,你都需要将你想得到的识别该属性的属性对象进行传递。下面是一些普通属性对象的属性路径的列表。

属性   使用的属性路径
Current Sequence File:   RunState.SequenceFile
Current Sequence:   RunState.Sequence
Current Step:   Step or RunState.Step
Calling Sequence File:   RunState.Caller.RunState.SequenceFile
Calling Sequence:   RunState.Caller.RunState.Sequence
Calling Step:   RunState.Caller.Step or RunState.Caller.RunState.Step



I. 使用NameOf()函数
如果你需要在一个步骤中的表达式(比如前表达式或后表达式)中对属性的名称进行读写,你可以使用这个函数。NameOf()函数返回任何一个属性对象的名称,这个属性对象是按一个参数来进行传递的。
你可以使用上面表格中所示的属性路径中的一个作为参数来传递。例如,你可以使用下面的表达式来得到当前序列的名称:

Locals.MySequenceNameVariable = NameOf(RunState.Sequence).

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

II. 使用TestStand API
如果你想在一个外部代码模块(比如从LabVIEW VI或者LabWindows/CVI dll)中进行属性名称的读写,你可以使用TestStand API。在TestStand中定义的很多类都有一个Name的属性(比如序列文件,序列,步骤以及PropertyObject类)。首先,你需要得到引用你所需要姓名的属性的对象,然后可以得到在该对象类中的Name属性。

比如,如果你想得到当前序列的名称,你可以得到引用当前序列的属性对象(例如如果你将sequence context传递给你的代码模块,使用ThisContext.Sequence属性),然后得到Name属性(比如Sequence.Name)。关于如何使用ActiveX来进行属性的读写,可以参考你的编程环境的帮助。

如果你是在LabWindows/CVI下实现的,你的代码可能如下:

TS_PropertyGetPropertyObject (testData->seqContextCVI, &errorInfo,"RunState.Sequence", 0, &CurrentSequence);
TS_PropertyGetProperty (CurrentSequence, &errorInfo, TS_PropertyName, CAVT_CSTRING, &SequenceName);



相关链接: KnowledgeBase 2NE7K56E: How Can I Get the Name of a Measurement From a Multiple Numeric Step Type?
Developer Zone Example: Storing Step Names of a Sequence in a Local Variable

附件:





报告日期: 05/17/2002
最近更新: 11/15/2007
文档编号: 2LGAJ26E