VisionPro二次开发学习笔记14-创建Cognex工具并捕获工具事件

这个示例演示了如何创建一个工具,将其分配给一个工具编辑控件,并捕获工具的 Changed、Ran 和 Running 事件。为此使用了 CogBlobTool 和 CogBlobEdit 控件。

CogImageFileTool 将在启动时自动加载位于“images”目录中的 bracket_std.idb 文件。
程序从 CogImageFileCDB 中检索一幅图像,并将其作为 CogBlobTool 的输入图像。这一过程是在 CogBlobTool 的 Running 事件处理程序内部完成的。

1. 界面设计

添加CogBlobEditV2控件,并设置Dock属性为fill

在这里插入图片描述

2. 添加引用

using Cognex.VisionPro;
using Cognex.VisionPro.Blob;
using Cognex.VisionPro.ImageFile;

3. 声明变量

        private CogImageFileTool imageFileTool;
        private CogBlobTool blobTool;

4. 加载工具

  1. 获取环境变量

    string VPPPath = Environment.GetEnvironmentVariable("VPRO_ROOT");
    
    • 从系统环境变量中获取名为 VPRO_ROOT 的变量值,并将其赋值给 VPPPath 变量。如果这个环境变量未设置,VPPPath 将为 null 或空字符串。
  2. 检查环境变量是否设置

    if (string.IsNullOrEmpty(VPPPath))
    {
        throw new Exception("环境变量VPRO_RROT未设置.");
    }
    
    • 这里检查 VPPPath 是否为空或为 null。如果是,则抛出异常,提示用户环境变量 VPRO_ROOT 未设置。这是为了确保后续代码能够顺利执行,因为后续操作依赖于这个路径。
  3. 构建图像文件路径

    string VPPFiles = VPPPath + "/Images/bracket_std.idb";
    
    • 构建一个完整的图像文件路径,将 VPPPath 和图像文件名 bracket_std.idb 结合起来。这个路径指向一个存储在 Images 目录下的图像文件。
  4. 创建图像文件工具并打开文件

    imageFileTool = new CogImageFileTool();
    imageFileTool.Operator.Open(VPPFiles, CogImageFileModeConstants.Read);
    
    • 创建一个 CogImageFileTool 实例,并使用 Open 方法打开之前构建的图像文件路径。CogImageFileModeConstants.Read 表示以只读模式打开文件。
  5. 创建并配置 Blob 工具

    blobTool = new CogBlobTool();
    cogBlobEditV21.Subject = blobTool;
    
    • 创建一个 CogBlobTool 实例,并将其分配给 cogBlobEditV21 控件的 Subject 属性。这使得 cogBlobEditV21 控件能够显示和编辑 blobTool 的属性。
  6. 注册事件处理程序

    blobTool.Changed += BlobTool_Changed;
    blobTool.Running += BlobTool_Running;
    blobTool.Ran += BlobTool_Ran;
    
    • blobTool 注册三个事件的处理程序:
      • Changed:当工具的状态或属性发生变化时触发。
      • Running:当工具开始运行时触发。
      • Ran:当工具运行完成时触发。
    • 这些事件处理程序可以用来更新界面或执行其他操作。
  7. 运行 Blob 工具

    blobTool.Run();
    
    • 最后,调用 Run 方法启动 blobTool 的处理过程。这将触发 RunningRan 事件,并根据工具的功能进行相应的图像处理。

5. Changed事件

        private void BlobTool_Changed(object sender, Cognex.VisionPro.CogChangedEventArgs e)
        {
            if ((e.StateFlags & CogBlobTool.SfRunStatus)>0)
            {
                if (blobTool.RunStatus.Result==CogToolResultConstants.Error)
                {
                    MessageBox.Show(blobTool.RunStatus.Message);
                }
            }
        }

事件处理逻辑

  1. 状态标志说明

    • StateFlags 属性是一个位字段,每一位代表工具中可能发生变化的单个元素。如果某一位被设置,则表示工具中的该元素发生了变化,通过检查这些位,可以确定哪些元素已更改。
  2. 检查特定状态的变化

    • 代码使用位与运算符(&)检查 RunStatus 属性是否发生变化。CogBlobTool.SfRunStatus 是一个静态常量,表示与运行状态相关的状态标志。
  3. 报告错误条件

    • 如果 StateFlags 中的 SfRunStatus 位被设置(即发生了变化),则进一步检查 VisionProTool.RunStatus.Result 的值。
    • 如果运行状态的结果为 CogToolResultConstants.Error,则表示在运行过程中发生了错误,此时使用 MessageBox.Show 显示错误消息。

总结

  • 这个事件处理程序的主要目的是监控 VisionProTool 的状态变化,特别是运行状态的变化。如果检测到错误,它会通过消息框通知用户。这种方式可以帮助开发者及时了解工具的执行状态,并处理潜在的问题。

6. Running事件

        //在Visionpro工具运行前调用此例程
        private void BlobTool_Running(object sender, EventArgs e)
        {
            imageFileTool.Run();
            blobTool.InputImage = imageFileTool.OutputImage;
        }

总结

这个方法的作用是在事件触发时获取输入图像,并将其存储在 VisionProTool 对象的 InputImage 属性中,以供后续处理

7. Ran事件

        //在 VisionPro 工具运行完成后被调用
        private void BlobTool_Ran(object sender, EventArgs e)
        {
            MessageBox.Show("工具已运行.");
        }

总结

这个方法的作用是在 VisionPro 工具运行完成后被调用,可以用于执行后续操作,比如报告结果或进行其他处理。此示例中,它通过弹出消息框来提示用户工具已运行。

8. 界面效果

在这里插入图片描述
在这里插入图片描述

可以看到,点击运行三角图标,Running事件被捕获,图片工具运行后更新了Blob工具的输入图像.

blob工具运行完成后,Ran事件被捕获,提示用户已运行.

在运行过程中如果发生错误,Changed事件被捕获,提示用户错误信息.

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VisionPro是一款视觉系统开发平台,提供了丰富的工具和功能,用于图像处理和分析。VisionPro二次开发是指在VisionPro的基础上进行个性化定制和扩展,以满足特定应用需求。 VisionPro二次开发可以通过编写自定义的算法和脚本来实现。用户可以使用VisionPro提供的算法库和API,根据自己的需求进行算法的扩展和修改,以达到更好的图像处理效果。 此外,VisionPro还提供了友好的界面和工具,可以通过拖拽、配置等方式,快速定制图像处理的流程。用户可以根据自己的需求,选择合适的工具和参数配置,来完成特定的图像处理任务。 VisionPro二次开发也涉及到与其他系统的集成。用户可以通过编写插件或接口,将VisionPro与其他设备或软件进行连接,实现数据的共享和交互。通过与其他系统的集成,可以扩展VisionPro的应用范围,提高系统的整体效能。 总之,VisionPro二次开发是一项在原来基础上进行个性化定制和扩展的工作,通过算法的扩展、界面的定制以及与其他系统的集成,来实现更灵活、更高效的图像处理和分析功能。 ### 回答2: VisionPro是一款先进的机器视觉软件,广泛用于工业自动化领域。visionpro二次开发是指在VisionPro软件基础上进行二次开发,根据实际需求进行定制化的开发工作。 VisionPro二次开发的目的是为了满足特定的需求或解决特定的问题。通过二次开发,可以添加新的图像处理算法、优化现有的功能、增加用户界面、集成外部设备或应用程序等。这样可以提高VisionPro的适用性和灵活性,使其更好地适应各种不同的应用场景。 在进行VisionPro二次开发时,首先需要了解和熟悉VisionPro的基本功能和特性。然后根据需要,进行软件开发、算法设计、界面设计等工作。开发完成后,还需要进行测试和调试,确保开发的功能符合要求并且可以稳定运行。 VisionPro二次开发的好处是可以根据实际需求进行定制化开发,使其更好地适应特定的应用场景。这样可以提高生产效率、降低生产成本,并且提供更好的产品质量控制。此外,VisionPro二次开发还可以提供更多的功能和选择,提高系统的灵活性和扩展性。 总之,VisionPro二次开发是一项重要的工作,可以定制化开发机器视觉应用程序,提高生产效率和质量控制的能力。这需要专业的技术团队和广泛的行业经验,以确保开发的软件能够满足实际需求并可靠运行。 ### 回答3: VisionPro是一款强大的图像处理软件,可用于实现机器视觉应用。VisionPro二次开发是指在基础软件上进行定制开发,以满足特定的应用需求。 VisionPro二次开发可以通过以下几个步骤实施: 首先,需要对应用需求进行详细的调研和分析。了解客户的具体需求,明确所需实现的功能和目标。 其次,根据需求分析的结果,制定开发方案和计划。确定所需功能的开发方式和技术手段,以及开发的时间和资源投入。 接下来,进行软件定制开发。根据方案和计划,对VisionPro软件进行二次开发。根据具体的需求,可以通过编写脚本、开发插件或接口等方式,实现所需的功能扩展或定制。 在开发过程中,需要对功能进行测试和调试,确保软件的稳定性和可靠性。可以利用模拟数据或实际图像数据进行测试,对开发的功能进行验证和优化。 最后,进行部署和应用集成。将二次开发VisionPro应用集成到实际的生产环境中,与其他设备或系统进行连接和交互。并对系统进行使用培训,使用户能够熟练操作和维护该应用。 VisionPro二次开发的好处在于可以根据需求进行定制开发,满足特定的应用场景和功能要求。通过二次开发,可以扩展和增强VisionPro的功能,提高图像处理的精确度和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值