在SPEL+中读取属性和结果:VGet、VSet
VGet和VSet命令可用于确认和设置SPEL+程序中的序列和对象属性。
VGet命令用于导入结果。例如,您可以改变搜索窗口的大小和位置、一个接受参数、相机增益和最大面积。
几乎所有通过Vision Guide 8.0点击界面可以读取的属性和结果都可以通过SPEL+程序进行读取。也有一些特殊的属性只能通过VSet或VGet读取,因为它们设置或返回多个结果。(如:SearchWin、RobotXYU和ModelWin。)
VGet和VSet使用相同语法。
每个命令必须首先参见序列的名称。除此之外,为了读取视觉对象的属性和结果,视觉对象的名称必须遵循序列名称。
利用一个句点来分隔序列、对象和属性或结果的名称。如果使用了多个结果,则通过在结果名称后面的圆括号中加上结果编号来选择特定的结果。
对于序列属性和结果,采用以下语法:
VGet seqName.propName, var ‘put property value in variable
VSet seqName.propName, value ‘set property to value
要读取对象的属性和结果,可使用以下语法:
VGet seqName.objName.resultName, var
VGet seqName.objName.propertyName, var
VSet seqName.objName.propertyName, value
要读取对象的多个结果,可使用以下语法:
VGet seqName.objName.resultName(resultnum), var
序列和对象名称也可以是字符串变量。
有关详细信息,请参考以下内容。
在序列和对象名称中使用变量
使用VGet
VGet检索一条属性或结果并将其置于SPEL+变量中。您必须在程序中提供具有适当数据类型的变量,以便接受来自VGet的数值。
这里是在SPEL+程序中使用VGet的一个例子。
Function Inspect
'Run the vision sequence
VRun InspectPart
Integer i, numberFound
Real area
VGet inspPart.Part1.NumberFound, numberFound
For i = 1 to numberFound
' Loop through each item that was found
' Get the area of the blob result
VGet inspPart.Part1.Area(i), area
Print "Area of result ", i, " is ", area
Next i
Fend
使用VSet
VSet设置运行时的属性值。这使得开发者能通过SPEL+程序动态地调整属性设置。
在大多数情况下,您可以从Vision Guide窗口中设置属性值,然后通过SPEL+程序运行视觉序列,而不改变任何属性。然而对于那些需要动态调节的情况,可以使用VSet SPEL+命令。
这里是在SPEL+程序中使用VSet的一个例子。注意,对VSet的第一次调用中设置了序列属性。对VSet的第二次调用中设置了名为SearchWin的对象属性,该属性用于在运行序列之前重新定义搜索窗口的位置和大小。
Function findPart
'Set camera gain for sequence "findPart"
VSet findPart.CameraContrast, 32
'Set search window for object "part"
VSet findPart.part.SearchWin, 100, 100, 50, 50
'Run the sequenced
VRun findPart
Fend