康耐视 VisionPro脚本的种类及功能
VisionPro 脚本可以定制或扩展 QuickBuild 的功能,主要表现在以下几个方面:
- 根据其他工具的运行结果有条件的运行视觉工具
- 对视觉工具的执行结果进行附加计算
- 创建或定制可重复利用的工具
在QuickBuild应用程序中,有三种类型的脚本:
- ToolGroup 脚本: 在 ToolGroup 中添加脚本,可以控制 ToolGroup的运行行为
- Job 脚本: 作业脚本可以对取像过程进行控制,设置取像参数,控制取像行为,例:设置曝光、频闪、自动对焦等
- ToolBlock 脚本: ToolBlöck 脚本使你可以定制或扩展视觉工具的功能,或者对工具的运行结果进行逻辑判断
三种脚本的具体功能和继承关系以及类成员
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 输入输出树中,可以将之连接到其他的工具上.
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 将被忽略.)
ToolBlock
ToolBlock 脚本使你可以定制或扩展视觉工具的功能,或者对工具的运行结果进行逻辑判断,当你使用应用程序向导的时候,所有的 ToolBlock 脚本都会移撞到 Visual Studio 应用程序中
使用场景:
- 动态创建输入/输出的时候
- 获取 CogToolBlock 中所有视觉工具的全部 API 接口的时候
- 需要向 Record 中添加 Graphic 的时候
关系总结
一个ToolGroup包含一个(或多个Job),一个Job包含一个(或多个ToolBlock)
提示:
//声明图形集合 CogGraphicCollection 一些关于 图形的 都可以放进去
CogGraphicCollection col = new CogGraphicCollection();
//声明圆 CogCircle
CogCircle mCircle = new CogCircle();
//设置颜色
mCircle.Color = CogColorConstants.Red;
//设置半径
mCircle.Radius = 15;
//设置圆心
mCircle.CenterX =
mCircle.CenterY =
//设置圆线条 的像素宽度
mCircle.LineWidthInScreenPixels = 2;
col.Add(mCircle);
//声明 图形标签
CogGraphicLabel mLabel = new CogGraphicLabel();
//颜色
mLabel.Color = CogColorConstants.Red;
//坐标和显示内容
mLabel.SetXYText(200, 200, "Result:NG");
//声明 线段 CogLineSegment
CogLineSegment xianduan = new CogLineSegment();
//需要传入 两个 点 两个点才能 形成线段
//声明多边形
CogPolygon polygon = new CogPolygon();
//传入参数
polygon = blob.Results.GetBlobs()[i].GetBoundary();
//设置粗细
polygon.LineWidthInScreenPixels = 10;
//设置颜色
polygon.Color = CogColorConstants.Red;
//声明外接矩形
CogRectangleAffine rec = new CogRectangleAffine();
//位置
rec.CenterX = (listX[i + 1] + listX[i]) / 2;
rec.CenterY = cal1.Results[i].Edge0.PositionY;
//宽度
rec.SideXLength = width;
//高度
rec.SideYLength = 100;
//颜色
rec.Color = CogColorConstants.Red;
//显示的时候 需要 遍历 图形集合
for (int i = 0; i < col.Count; i++)
{
mToolBlock.AddGraphicToRunRecord(col[i], lastRecord, "CogPMAlignTool1.InputImage", "script");
}
更多推荐
所有评论(0)