康耐视VisionPro脚本BUG修改教程

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

脚本故障查询

在我们编写康耐视的加拨本的时候,可能会产生一些BUG,有写BUG是语法的原因造成,有些BUG是由于其他原因造成的非语法内错误。这种错误可能是由于数据的传输了这些原因造成的。需要调试才能找到BUG的原因,那么需要怎么样才能调试康耐视的脚本你?

语法类错误

image.png
语法类的脚本错误,一般vp会进行相应的提示,比如简单的分隔符忘记了这些;或者定义的变量不存在l

image.png
我们只需要将关键字进行修改,就能解决问题;

Line 38, column 65: Error - 未能找到类型或命名空间名称“CogPMAlignToo1l”(是否缺少 using 指令或程序集引用?)
在这里,会提示大家在那一行存在错误。有错误了是没办法进行运行的。

image.png
当整体我们点击发行没有报错的时候,我们才可以使用脚本;

未知类错误

当我们发行了脚本后,他也没有错误,也没有报警,但是,程序运行出错。例如:

image.png

image.png
那这个时候我们检查语法没有问题,逻辑没有出错,怎么办呢?

 mToolBlock.Outputs["patCount"].Value = 0;
    mToolBlock.Outputs["patZuoBiao"].Value =" 0.00,0.00";
    CogPMAlignTool pat = mToolBlock.Tools["CogPMAlig1nTool1"] as CogPMAlignTool;
    // Run each tool using the RunTool function
    foreach(ICogTool tool in mToolBlock.Tools)
      mToolBlock.RunTool(tool, ref message, ref result);
    //工具运行结束后,我们需要判断工具是否正常运行
    //本文由宋小童创建于2020/05/18
    if( pat.RunStatus.Result == CogToolResultConstants.Accept)
    {
      //模板的个数赋值给输出的个数
      mToolBlock.Outputs["patCount"].Value = pat.Results.Count; 
      //模板的第二个坐标的值赋给我们的输出;
      mToolBlock.Outputs["patZuoBiao"].Value = pat.Results[1].GetPose().TranslationX.ToString("0.00") + "," + pat.Results[1].GetPose().TranslationY.ToString("0.00");
   
    }
    else
    {
      
      mToolBlock.Outputs["patCount"].Value = "error";
      mToolBlock.Outputs["patZuoBiao"].Value = "工具运行失败";
    }

语法没有问题,逻辑判断也没有问题。
这个时候我们就需要将这个脚本带入到我们的VS中去运行。
具体操作如下》:

  1. 将这一行的代码的注释去掉,;

image.png
2. 打开VS,点击调试,然后选择附加到进程;

image.png
3. 在里面找到我们的脚本

image.png
4. 运行你的VPP程序,将脚本 “发行”改为“调试 ***
5. 程序进入VS调试中,开始单步运行;
发现我们定义的pat为null

image.png
仔细一看,我们工具的名字写错了,多了一个1

image.png
我们在脚本中进行更改,将调试再改回来。代码注释掉。运行

image.png
我们成工的修改掉了BUG
以上就是我们本次所讲类容。

康耐视 VisionPro 是全球领先的机器视觉软件,广泛应用于电子制造、汽车、医药等多个行业,其以高精度、灵活性和开发效率著称。对于脚本编写,VisionPro 提供了丰富的接口和工具,使开发者能够根据具体需求定制化视觉解决方案。 在脚本编写中,开发者可以通过调用工具组的输出和结果,实现对图像处理流程的控制。例如,使用 `mToolBlock.Outputs["patCount"].Value` 和 `mToolBlock.Outputs["patZuoBiao"].Value` 可以将模板匹配工具的结果赋值给特定输出,从而获取模板的个数和坐标信息。此外,开发者可以通过 `CogPMAlignTool` 对工具的结果进行遍历,判断工具是否正常运行,并根据运行结果进行后续操作。例如,通过 `pat.RunStatus.Result == CogToolResultConstants.Accept` 判断模板匹配是否成功,并将结果赋值给输出变量,确保脚本的准确性和稳定性 [^2]。 除了模板匹配工具,VisionPro 还支持多种图像处理工具,如 `CogBlobTool`,可用于检测图像中的光斑区域。通过 `GetBlobs()` 方法可以获取所有检测到的光斑,并通过 `GetBlobByID()` 获取特定光斑的信息,如面积、最小外接矩形等。这些信息可以用于进一步的图像分析或输出到外部系统。例如,通过 `CogBlobTool.Results.GetBlobs()[0].Area` 可以获取最大光斑的面积值,值类型为 `Double`,从而实现对图像特征的量化分析 [^4]。 在脚本的实际应用中,开发者还可以通过 `ModifyLastRunRecord` 方法将处理结果记录到运行日志中,便于后续调试和数据分析。例如,通过 `AddGraphicToRunRecord` 方法可以将图形信息添加到运行日志中,方便查看图像处理过程中的关键信息 [^3]。 以下是一个简单的脚本示例,用于获取光斑的最小外接矩形并输出相关信息: ```csharp int rescount = this.Tools.CogBlobTool1.Results.GetBlobs().Count; CogRectangle rect = this.Tools.CogBlobTool1.Results.GetBlobByID(rescount - 1).GetBoundingBox(CogBlobAxisConstants.Principal); ``` 上述代码首先获取 `CogBlobTool1` 的所有光斑结果,并找到最后一个光斑(即面积最大的光斑),然后获取其最小外接矩形,并将其赋值给 `rect` 对象,便于后续使用 [^3]。 ### 脚本编写注意事项 1. **变量命名规范**:确保变量命名清晰易懂,便于后续维护和调试。 2. **错误处理机制**:在脚本中加入错误处理逻辑,例如判断工具是否成功运行,避免程序异常中断。 3. **结果可视化**:利用 `AddGraphicToRunRecord` 等方法将关键处理结果记录下来,便于调试和验证脚本逻辑。 4. **性能优化**:合理使用工具组和脚本逻辑,避免不必要的重复计算,提高处理效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值