通过SPEL+语言读取多个结果
Correlation和Blob对象等一些Vision Guide对象能够使用NumberToFind属性通过一个对象找出多个特征。如果我们在[Object]窗口中检验结果,则CurrentResult属性用于设置在结果列表中将会显示哪个结果。它也用于决定将结果返回哪个结果记录。例如,如果我们想要得到Blob对象返回的第3个结果的Area结果,则CurrentResult必须设置为3。您已了解如何从 [Object] 窗口属性列表中完成这步。现在,让我们看看如何利用SPEL+语言读取多个结果。
通过SPEL+语言读取多个结果时,将结果视为阵列,而结果编号为将要读取的结果旁边的下标号。以下第一个示例显示的是如何获得第3个Area结果,以及如何将其从SPEL+语言放入名为面积的变量。
VGet seqname.objname.Area(3), area
以下第二个示例显示的是如何获得相同的第3个Area结果,但是这次将其指定为名叫area的阵列中第3个元素的值。
VGet seqname.objname.Area(3), area(3)
可使用不同的名称表示阵列中的元素,但不可以表示固定元素,如上述示例2。注意,将名为var的变量用作Area结果的下标。
VGet seqname.objname.Area(var), area(var)
第4个示例假设您已采用一个视觉对象查找多个零件(假如多达10个)。现在,您可能需要用机器人来拾取这些零件(假设为笔),所以您就需要将X、Y和U坐标存储到每个已找到零件坐标值的阵列变量中。以下代码利用RobotXYU结果来检索这些坐标,并将其放入X、Y和Z阵列,随后将利用这些阵列来移动机器人。
Function test
Boolean found(10)
Integer numfound, i
Real x(10), y(10), u(10)
Jump camshot 'move camera into position snap shot
VRun seq01 'run the vision sequence to find the pens
VGet seq01.blob01.NumberFound, numFound 'how many found
For i = 1 to numFound 'get robot coords
VGet seq01.blob01.RobotXYU(i), found(i), x(i), y(i), z(i)
Next i
'Add code for robot motion here……
Fend