一.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 所示:

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

VisionPro脚本详解相关推荐

  1. sshd系统自带启动脚本详解

    SSH 为 Secure Shell 的缩写.sshd服务是linux系统中最经常使用的服务之一.由于其规避了明文传送口令.内容本文及中间人***的安全隐患,因此经常作为远程管理系统的首选方案.虽然各 ...

  2. shell脚本详解(十二)——Here Document免交互及Expect自动化交互

    shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...

  3. shell脚本详解(十)——sed编辑器的使用方法

    shell脚本详解(十)--sed编辑器的使用方法 一.sed编辑器 二.sed编辑器工作流程 1.读取: 2.执行: 3.显示: 4.注: 三.命令格式 四.常用选项 五.常用操作 六.使用地址 s ...

  4. shell脚本详解(九)——一键部署DNS正向解析

    shell脚本详解(九)--一键部署DNS正向解析 一.DNS正向解析 二.shell脚本一键部署 一.DNS正向解析 详情请点击:DNS正向解析 二.shell脚本一键部署 #!/bin/bash ...

  5. shell脚本详解(七)——正则表达式、sort、uniq、tr

    shell脚本详解(七)--正则表达式.sort.uniq.tr 一.排序命令--sort 1.格式 2.常用选项 3.示例 二.去除重复行操作命令--uniq 1.格式 2.常用选项 3.示例 三. ...

  6. shell脚本详解(六)——数组简介和排序算法

    shell脚本详解(六)--数组简介和排序算法 一.数组 1.数组的定义方法 ①.方式一: ②.方式二: ③.方式三: ④.方式四: 2.数组包括的数据类型 3.获取数组长度 4.获取数据列表 5.读 ...

  7. shell脚本详解(四)——循环语句之while循环和until循环(附加例题及解析)

    shell脚本详解(四)--循环语句之while循环和until循环 一.until循环 1.循环结构 2.例题 二.while循环 1.循环结构 2.例题(每个人的思路不同,会导致脚本内容不一样,这 ...

  8. shell脚本详解(三)——循环语句之for循环

    shell脚本详解(三)--循环语句之for循环 一.echo命令 – 输出字符串或提取Shell变量的值 1.格式 2.常用参数 3.示例 二.for循环语句 1.for循环结构 2.例题 ①.例题 ...

  9. shell脚本详解(二)——条件测试、if语句和case分支语句

    shell脚本详解(二)--条件测试.if语句和case分支语句 一.条件测试 1.test命令 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二.if条件语句 1.单分支 2.双分支 ...

最新文章

  1. 用SCCM2007 R2分发软件,SCCM系列之五
  2. base64编码的学习和理解
  3. 范式青春er,寻找同行的你!
  4. xd使用技巧_魔兽世界怀旧服老玩家才会的治疗技巧,这四个技能需要看时机选择...
  5. 马化腾王健林一起逛街 买了一杯茉莉茶却忘了拿走
  6. python通过内置模块监控磁盘、内存、CPU、负载
  7. hudi延迟日志命名
  8. View内容保存为图片
  9. ButterKnife View 注入
  10. oracle 基数 选择率,1.1.2.2 可选择率(1)
  11. 虚拟主机支持ssl支持php7,虚拟主机支持https改造吗
  12. 车牌字符识别算法原理
  13. python:计算四分位距IQR
  14. 模块1--BH1750的应用(IIC)
  15. 贝多芬第九交响第五乐章合唱歌词
  16. Linux内核系统论文写作虚拟机方案
  17. 生命如歌-五年级每日一记
  18. 【算法】10亿int型数,统计只出现一次的数
  19. tensorflow one-hot独热编码
  20. Docker-- 提高下载速度的方法

热门文章

  1. 双目立体视觉(3)- ZED2 ROS Melodic 发布RGB图像及深度信息
  2. scrapy 简单教程
  3. 郭德纲相声里的插入广告
  4. UnityHub打开黑屏的解决方法
  5. 北京15家颜值爆表的餐厅!90%的妹纸来这里都不是为了吃饭
  6. 机械手表,石英手表,智能手表怎么选最好,哪种更适合佩戴?
  7. 数据结构与算法--哈夫曼树及其应用
  8. “人生苦短,我用Python“——身份认证攻击
  9. unity之二维数组实现正六边形地图
  10. Android 8内测版本,安卓qq v8.0.8内测版