通过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