Visionpro的脚本技巧

1、能够在visionpro中实现对脚本输入输出的自动获取,不需要连线
在public override bool GroupRun(ref string message,ref CogToolResultConstants result) 方法中编写:
foreach(CogToolBlockTerminal ctbt in mToolBlock.Output)
{
try
{
ctbt.Value=null;
}
catch()
}

CogToolBlock innerTB=null;
if(mToolBlock.Tools.Contains(“InnerToolBlock”))
{
innerTB=mToolBlock.Tools[“InnerToolBlock”] as CogToolBlock;
}

if(innerTB!=null)
{
foreach(CogToolBlockTerminnal ctbt in mToolBlock.Inputs)
{
if(innerTB.Inputs.Contains(ctbt.Name) && ctbt.Value!=null)
{
innnerTB.Inputs[ctbt.Name].Value=ctbt.Value;
}
}
}

//Run each tool using the Runtool function
foreach(IcogTool tool in mToolBlock.Tools)
mToolBlock.RunTool(tool,ref message,ref result);

if(innerTB!=null)
{
foreach(CogToolBlockTerminal ctbt in mToolBlock.Outputs)
{

<think>首先,用户要求查找VisionPro脚本相关信息,包括使用方法、示例及相关资料。我需要基于提供的站内引用[1]到[5]来回答。 关键点总结自引用: - 引用[1]:提供VisionPro自定义工具开发的示例,包括如何编写自定义工具并集成到VisionPro中。项目地址:https://gitcode.com/open-source-toolkit/b37c9 [^1]。 - 引用[2]:VisionPro脚本教程专栏,内容包括脚本简介、脚本类与方法、使用案例、进阶主题、调试与优化 [^2]。 - 引用[3]:VisionPro脚本调试教程,提到VisionPro使用多态技术实现脚本功能,重写接口方法来自定义功能 [^3]。 - 引用[4]:康耐视Visionpro脚本编写教程二,展示了如何使用工具终端赋值和访问工具输出 [^4]。 - 引用[5]:康耐视Visionpro工具的终端介绍,包括脚本结构和脚本说明,例如访问结果值 [^5]。 用户查询:"我想查找VisionPro脚本相关信息 请问VisionPro脚本的使用方法、示例及相关资料" 所以,我需要组织回答,覆盖: 1. VisionPro脚本的使用方法 2. 示例 3. 相关资料 回答结构需要清晰: - 使用中文回答 - 行内数学表达式用$...$格式(但在这个上下文中可能不需要数学) - 独立公式用$$...$$(同样可能不需要) - 生成相关问题 - 在引用的段落末尾添加引用标识,如[^1] 系统指令还要求:"回答中引用的段落末尾自然地添加引用标识",所以在描述每个点时,如果基于引用,添加引用。 组织回答: 1. **引言**:简要介绍VisionPro脚本。 2. **使用方法**:解释如何使用脚本,基于引用。 3. **示例**:提供一些代码示例。 4. **相关资料**:列出资源链接。 5. **相关问题**:生成相关问题。 确保回答真实可靠,引用给定的引用。 具体内容: - **使用方法**: - 引用[2]提到脚本的作用:用于自动化任务或自定义功能 [^2]。 - 引用[3]:VisionPro通过多态技术实现脚本功能,用户重写接口方法 [^3]。 - 脚本类:如ToolGroup、ToolBlock、Job脚本类(引用[2]和[3])。 - 脚本结构:如赋值输出项、访问工具属性(引用[4]和[5])。 - **示例**: - 引用[4]提供了一个脚本示例:设置输出值和使用模板匹配工具 [^4]。 - 引用[2]提到使用案例如自动调节曝光时间、显示Blob区域的中心坐标 [^2]。 - **相关资料**: - 项目地址:https://gitcode.com/open-source-toolkit/b37c9 [^1] - 教程专栏(引用[2]) - 其他引用提供具体教程。 生成相关问题: - 基于主题,如如何调试脚本脚本的最佳实践?集成自定义工具等。 最终回答结构: 1. VisionPro脚本简介 2. 使用方法(包括脚本类和方法) 3. 使用示例 4. 相关资料推荐 5. 相关问题 </think>### VisionPro脚本使用方法、示例及相关资料 VisionPro是康耐视公司开发的机器视觉软件平台,支持脚本编程来自动化任务和自定义功能。脚本允许用户扩展内置工具的功能,实现更灵活的视觉处理流程。以下内容基于您提供的站内引用,我将系统介绍脚本的使用方法、提供示例代码,并推荐相关资料。 #### 1. **VisionPro脚本的使用方法** VisionPro脚本主要用于自定义工具逻辑或自动化作业流程。其核心是通过重写接口方法来实现特定功能,支持多种脚本类(如Job、ToolGroup、ToolBlock)。使用方法包括: - **脚本类与方法**: - **ToolGroup脚本类**:管理一组工具的协作逻辑,用户可重写`Run`方法定义整体执行流程。例如,脚本可以控制工具之间的数据传递或错误处理 [^3]。 - **ToolBlock脚本类**:针对单个工具的封装,用户可访问输入/输出项并自定义处理逻辑。脚本中需为输出项赋初值,如`mToolBlock.Outputs["patCount"].Value = 0` [^4]。 - **Job脚本类**:用于自动化整个作业流程,如批量图像处理。用户可编写脚本实现事件触发(如自动调节相机曝光时间) [^2]。 - **脚本开发步骤**: 1. 在VisionPro环境中创建脚本对象(如Job或ToolBlock)。 2. 使用C#或VB.NET编写脚本代码,访问工具接口(如`CogPMAlignTool`用于模板匹配)。 3. 重写接口方法(如`Execute`),处理工具输出(例如访问Blob工具的结果:`CogBlobTool.Results.GetBlobs()[0].Area` [^5])。 4. 调试脚本:通过Visual Studio集成或VisionPro内置调试器检查语法错误和逻辑问题 [^2]。 - **关键技巧**: - 脚本可作为插件程序集加载,便于维护和复用 [^2]。 - 使用委托处理事件,如工具执行完成时的回调逻辑 [^2]。 - 脚本调试时优先处理初始值赋值错误,这是常见问题源 [^4]。 #### 2. **脚本使用示例** 以下是基于引用提供的代码示例,展示常见场景: - **示例1:ToolBlock脚本显示Blob区域中心坐标** (基于引用[4]和[5])。此脚本访问Blob工具的结果,计算并显示区域的中心坐标: ```csharp // 重写ToolBlock脚本的Run方法 public override void Run() { // 赋初值给输出项 mToolBlock.Outputs["patCount"].Value = 0; mToolBlock.Outputs["patZuoBiao"].Value = "0.00,0.00"; // 获取Blob工具实例 CogBlobTool blobTool = mToolBlock.Tools["CogBlobTool1"] as CogBlobTool; if (blobTool.Results != null && blobTool.Results.GetBlobs().Count > 0) { // 访问第一个Blob区域的结果 double area = blobTool.Results.GetBlobs()[0].Area; double centerX = blobTool.Results.GetBlobs()[0].CenterX; double centerY = blobTool.Results.GetBlobs()[0].CenterY; // 更新输出项 mToolBlock.Outputs["patCount"].Value = blobTool.Results.GetBlobs().Count; mToolBlock.Outputs["patZuoBiao"].Value = $"{centerX:F2},{centerY:F2}"; } } ``` 此脚本用于缺陷检测,输出Blob数量和坐标 [^4][^5]。 - **示例2:Job脚本自动调节曝光时间** (基于引用[2])。此脚本在图像采集过程中动态调整相机参数: ```csharp // Job脚本类中重写Execute方法 public override void Execute() { // 获取图像采集工具 CogAcqFifoTool acqTool = Job.Tools["AcquisitionTool"] as CogAcqFifoTool; // 检查图像亮度并调节曝光 CogImage8Grey image = acqTool.OutputImage as CogImage8Grey; double avgIntensity = image.GetStatistics().Mean; if (avgIntensity < 50) // 亮度过低时增加曝光 { acqTool.AcqFifo.OwnedExposureParams.Exposure = 100; // 单位毫秒 } // 执行后续工具链 base.Execute(); } ``` 此脚本适用于照明变化环境,确保图像质量稳定 [^2]。 #### 3. **相关资料推荐** 基于引用,以下资源提供详细教程和示例代码: - **开源示例项目**: VisionPro自定义工具开发示例,包含脚本集成方法(地址:[https://gitcode.com/open-source-toolkit/b37c9](https://gitcode.com/open-source-toolkit/b37c9))。此项目演示如何编写自定义工具并像内置工具一样使用 [^1]。 - **教程专栏**: 《VisionPro脚本教程专栏:深入理解与实践》,覆盖脚本类、方法、案例及调试技巧(见目录:脚本简介、类与方法、使用案例、进阶主题) [^2]。 - **调试指南**: 《visionpro脚本调试教程》,重点讲解多态技术和接口重写方法 [^3]。 - **实用教程**: - 《康耐视Visionpro脚本编写教程二》,聚焦工具终端赋值和输出访问 [^4]。 - 《康耐视Visionpro工具-工具终端介绍》,详细说明脚本结构和结果访问语法(如`CogBlobTool.Results.GetBlobs()[0].Area`) [^5]。 #### 相关问题 基于VisionPro脚本主题,以下是推荐的相关问题: 1. VisionPro脚本如何与Visual Studio集成进行调试? 2. 在脚本中如何正确处理工具执行错误或异常? 3. VisionPro脚本有哪些性能优化技巧? 4. 如何将自定义脚本打包为可复用的插件程序集? 5. VisionPro脚本在工业自动化中的典型应用案例有哪些? 如需深入某个主题(如调试技巧或更多代码示例),请随时补充提问!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值