有三种主要方法可以通过编程创建 TestStand 数组。
- 克隆现有数组
- 创建一个新的数组对象
- 使用 PropertyObject.NewSubProperty
以上方法都需要使用 TestStand API 将数组作为 TestStand 变量(即
Local 、
Parameter 、
FileGlobal 、
StationGlobal )或属性(例如Step Property)插入。
- 克隆现有数组
如果您有现有数组,则可以克隆它,然后将克隆的数组作为 Property Object 插入。新数组将与原始数组相同(即相同的类型、大小和值)。然后,您可以根据需求修改新数组的内容。您可以使用以下 TestStand API 方法来实现此目的:
a) PropertyObject.Clone
此方法创建您在lookupString参数中指定的属性副本,返回值是PropertyObject 对象。然后,使用PropertyObject.SetPropertyObject()方法插入新数组。
b) PropertyObject.SetPropertyObject
使用此方法并将其 Options 参数设置为1 ( InsertIfMissing ),再通过上述PropertyObject.Clone()方法获得的PropertyObject引用作为newValue参数传递。新数组的名称可以在lookupString参数中设置。
例子:
Locals.SetPropertyObject("myNewArray", 1, Locals.myCurrentArray.Clone("", 0))
- 创建一个新的数组对象
此方法创建一个全新的数组对象,然后您可以将其作为常规数组插入。新数组将为空(零元素),但您可以像处理任何数组一样调整其大小并修改其内容。使用以下 TestStand API 方法来实现此目的:
a) Engine.NewPropertyObject
此方法创建并返回一个新的PropertyObject对象,您将在下文描述的PropertyObject.SetPropertyObject方法中使用Engine.NewPropertyObject
插入新数组。Engine.NewPropertyObject
具有以下原型:
Engine.NewPropertyObject(valueType, asArray, typeName, options)
注意第二个参数是一个布尔标志,它允许你指定刚刚创建的Property Object是一个数组。您可以通过valueType参数指定新数组的类型。
b) PropertyObject.SetPropertyObject
使用此方法并将其 options 参数设置为1 (InsertIfMissing) ,并将使用上述Engine.NewPropertyObject方法获得的PropertyObject引用作为newValue参数传递。新数组的名称可以在lookupString参数中设置。
例子:
Locals.SetPropertyObject("myNewArray", 1, RunState.Engine.NewPropertyObject(PropValType_Number, True, "", 0))
-
使用 PropertyObject.NewSubProperty
此 TestStand API 方法创建一个新的子属性,其名称由lookupString参数指定。该方法具有以下原型:PropertyObject.NewSubProperty(lookupString, valueType, asArray, typeName, options)
请注意,第三个参数是一个布尔标志。它允许您指定要创建的子属性是否是一个数组。您可以通过valueType参数指定新数组的类型,并在lookupString参数中指定其名称。新数组将为空(零元素),但您可以调整其大小并修改其内容,就像对任何数组所做的那样。
定数组大小的一种方法是使用SetNumElements()方法。此方法具有以下原型:
PropertyObject.SetNumElements(numElements, options)
例子:
Locals.NewSubProperty("myNewArray", PropValType_Number, True, "", 0), #NoValidation(Locals.myNewArray.SetNumElements(10, 0))
可以通过添加SetArrayBounds()方法来动态创建零初始化的二维数组:
Locals.SetPropertyObject("newArray", 1, RunState.Engine.NewPropertyObject(3, True, "", 0)), SetArrayBounds(#NoValidation(Locals.newArray), "[0][0]", "[2][2]")
附加信息
有关这些 TestStand API 方法的详细信息,请参阅 Teststand 帮助。您可以通过 TestStand Sequence Editor 选择
Help»TestStand Help 打开相关的帮助文档。所有 TestStand API 方法都可用于支持 ActiveX 编程的任何编程语言。
您也可以通过下面链接的示例程序来了解这些方法的实现。