VisionPro脚本详解

一.VisionPro脚本的种类及功能
VisionPro 脚本可以定制或扩展 QuickBuild 的功能,主要表现在以下几个方面:

根据其他工具的运行结果有条件的运行视觉工具
对视觉工具的执行结果进行附加计算
创建或定制可重复利用的工具
当你创建Quick Build程序运行时,VisionPro在特定的点执行脚本程序,这些脚本程序可能代替正常的VisionPro代码,亦可能附加在VisionPro代码后执行.

在QuickBuild应用程序中,有三种类型的脚本:

ToolGroup 脚本: 在 ToolGroup 中添加脚本,可以控制 ToolGroup的运行行为
Job 脚本: 作业脚本可以对取像过程进行控制,设置取像参数,控制取像行为,例:设置曝光、频闪、自动对焦等
ToolBlock 脚本: ToolBlöck 脚本使你可以定制或扩展视觉工具的功能,或者对工具的运行结果进行逻辑判断
二.三种脚本的具体功能和继承关系以及类成员
2.1 ToolGroup
功能: 能够控制 ToolGroup 中的每一个视觉工具的单独执行,并能控制它们的执行的先后顺序,而且可以调整各个视觉工具的输入输出.例如:你可以利用 Patmax 工具测得的 scale 结果来调整caliper 工具的输入参数每一个 Job 中至少含有 1 个ToolGroup (默认为 1个) ,当含有多个 ToolGroup 时,每个 ToolGroup 都可以有自己的独立脚本,各个 ToolGroup 脚本之间不会相互影响.

继承关系及类成员: ToolGroup脚本( CogToolGroupBaseScript)继承于 ICogToolGroupScript
CogToolGroupBaseScript 的含有如下成员:

ToolGroup :可以通过这个成员来获得控制你脚本程序的CogToolGroup
Initialize: 当你关闭脚本编辑器、编译脚本或从一个 Vpp 文件加载脚本的时候会调用此方法
GroupRun: 在 ToolGroup 运行时,如果还回值设为 True ,这个方法将会运行, Visionpro 将运行此 ToolGroup 中的所有工具;如果还回设为Fálse ,将由用户来编写代码来运行 ToolGroup 中的工具,请注意,一般使用 toolGroup.RunTool 来运行 TooIGroup 中的工具而不是视觉工具中的 Run 方法
ModifyLastRunRecord: 当 TooIGroup 创建 Last Run Record 的时候会调用此方法,你将可以通过重写此方法来向现有的Last Run Record 中添加新的 records 或 graphics.
CogToolGroup 的含有如下成员:

RunTool : 运行 CogToolGroup 中的单个工具,仅能通过 GroupRun 方法来调用 RunTool 方法,并且 GroupRun 需要为之提供消息和结果参数
Tools: 此属性还回 ToolGroup 中的工具集
AddGraphicToRunRecord: 在上面所介绍的 ModifyLastRunRecord 中运用 AddGraphicToRunRecord 方法,你可以将graphics 添加到 Last Run Record 中
DefineScriptTerminal,GetScriptTerminalData,SetScriptTerminalData: 在 ToolGroup 中,你可以用 DefineScriptTerminal 创建终端,并可以利用 GetScriptTerminalData 和 SetScriptTerminalData与终端进行数据交互.
说明: 为了能够在 TooIGroup 脚本中独立运行视觉 tools ,你可以使用toolGroup 的 Tools 属性.你可以通过两种方法来引用视觉工具,一是通过索引,二是通过工具名称.一般来讲,通过名称来引用视觉工具更为方便,因为你可以为其定义有实际意义的名称,以便于理解和记忆.例如:
CogBlobTool _cogBlob = (CogBlobTool) mToolBlock.Tools["CogBlobTool1"];//通过名称
CogBlobTool _cogBlob = (CogBlobTool) mToolBlock.Tools[4];//通过索引
使用脚本的一个重要原因就是利用常规 QuickBuild 用户接口来对工具运行的结果进行计算非常困难,例如,计算多个工具的运行结果.不过你可以在脚本中来实现此功能,在 ToolGroup 脚本中,为了使计算结果作为一个值输出,您需要定义输出终端.终端的定义方法是在 Initialize 函数中调用 toolGroup 的 DefineScriptTerminal 方法,终端定义成功后,终端的名称将出现在 ToolGroup 输入输出树中,您可以将之连接到其他的工具上.

2.2 Job
功能: 相比较 ToolGroup 脚本, Job 脚本使你能够使用 CogJob 对象,你可以利用 Job 脚本改变取像过程,例如:设置曝光、频闪、自动对焦、每取一次像改变一次取像参数.

继承关系及类成员: Job 脚本( CogJobBaseScript)继承自 ICogJobScript 类
CogJobBaseScript 有如下成员:

job: 通过此成员可以获得控制您脚本的 CogJob
AcqFifoConstruction: 这个方法在"取像 FIFO" 与作业建立联系的时候调用,你可以通过它来一次性设置"取像 FIFO"
PreAcquisition: 这个函数在 StartAcquire 之前调用,以给你在取像之前改变"取像 FIFO" 的机会
PostAcquisition: 这个函数在 CompleteAcquire 之后调用,以给你在取像之后改变"取像 FIFO" 的机会
PostAcquisitionRef: 这个函数和 PostAcquisition 类似,但是 image 是以引用的方式传递,如果这个方法返回 Ture , VisionPro 将处理这个 image,如果这个方法返回 False ,这个 image 将不被处理, QuickBuild 接着取下一个 image ,这可以使你能够在处理所取的多个 image 之前将它们联合在一起.(如果 PostAcquisition 和 PostAcquisitionRef 都被重写,PostAcquisition 将被忽略.)
2.3 ToolBlock
ToolBlock 脚本使你可以定制或扩展视觉工具的功能,或者对工具的运行结果进行逻辑判断,当你使用应用程序向导的时候,所有的 ToolBlock 脚本都会移撞到 Visual Studio 应用程序中.
使用场合:

动态创建输入/输出的时候
获取 CogToolBlock 中所有视觉工具的全部 API 接口的时候
需要向 Record 中添加 Graphic 的时候
2.4 关系总结
一个ToolGroup包含一个(或多个Job),一个Job包含一个(或多个ToolBlock).如图 2.4 所示:

————————————————
 

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值