• ifix 自动化(Automation)错误弹窗的解决方案


    在先前ifix项目中添加了语音模块,然后概率性跳出自动化(Automation)错误弹窗,先前分析了很多种原因,从代码的冗余,编码等角度进行了优化,效果不是很理想,仍然会概率性出现。经过反反复复大约3次分析,五天时间终于找到原因,并予以解决。分享给大家。

    1.错误描述

    后台事件调度,在调用前台画面时,概率性跳出如下图自动化错误提示,导致后续的调度无法执行,严重影响工厂的正常运营。

    2.错误原因

    深层原因:根据错误号,找到原因为:Call Rejected by Callee。fixbackground后台程序和workspace程序属于两个线程,当后台程序通过fixbackground调用前台的画面时,可能由于交互繁忙被拒绝,从而导致该错误发生。

    浅层原因:为什么会出来这个错误弹窗?如何消除?根源在于后台脚本中调用了openpicture,closepicture,OpenTGDPicture等为命令包装器。(Command Wrappers)命令包装器是可以返回错误的子例程,如果在代码中没有处理这些错误,则会显示消息框,通过使用错误处理,它允许代码处理错误。因而,我们可以通过代码的方式将错误进行捕获处理。

    我们可以通过如下方法进行验证:

    在后台调度代码中,打开前台画面,然后里可以运行关闭画面代码,该demo可以100%复现该问题,从而定位到这个问题原因无误。

    Private Sub FixEvent3_WhileTrue()
    
    openpicture “故障报警.grf”,“”,“”,“”,1
    closepicture "故障报警.grf", 1
    
    End Sub

    3.解决方案

    根据ifix给出的关于openpicture的错误参数

    默认情况下,OpenPicture使用错误选项0.以下是每个错误选项的说明。

    • 0(默认值) - 允许子例程提供错误消息。错误以消息框的形式显示。如果没有为intErrorMode参数创建条目,则使用默认值
    • 1作为Error Option参数,您可以在计时器或事件脚本中处理错误。例如,从那里,您可以将其发送到Windows NT事件日志。

    • 2作为错误选项参数,您可以将错误发送到警报历史记录。

    下面进行修复验证:

    1.将fixbackground.exe设置参数/service以后台服务方式运行。

    2.脚本编写验证。

    Private Sub FixEvent1_WhileTrue()
    
    On Error GoTo HandleErr
    Dim workspace As Object
    Set workspace = GetObject("", "Workspace.Application")
    Dim tagvar As Object
    Set tagvar = workspace.Documents("User").Page.FindObject("PicNumBer")
    tagvar.Description = "二期粗格栅1号污水泵"
    
    With workspace
    OpenPicture "故障报警.grf", "", "", "", 1
    closepicture "故障报警.grf", 1
    End With
    'OpenPicture tt, "", TOP, LEFT, 0, , NONE, "", 1
    Exit Sub
    
    HandleErr:
    
    If Err.Number = -2147418111 Then
    OpenPicture "故障报警.grf", "", "", "", 1
    'Resume Next
    Else
    End If
    End Sub

     

    3.备注:依据上述给出的分析,我们可以直接设置OpenPicture "故障报警.grf", "", "", "", 2这种方法,可以直接跳过该条语音命令而在后台中不报错。

    2019/7/8更新:

    要实现多个事件能同时触发还得加参数

    
    openpicture tt, "", TOP, LEFT, 1, , NONE, "", True

    更多工业交流和工作帮助可以订阅我的个人订阅号哦!

  • 相关阅读:
    11 数据的增删改
    10 外键的变种 三种关系
    09 完整性约束
    03 body标签中的相关标签
    02 body标签中的相关标签
    01 HTML介绍和head标签
    08 数据类型(2)
    07 数据类型
    06 表的操作
    偶遇RecyclerView内部Bug
  • 原文地址:https://www.cnblogs.com/cache-yuan/p/12870795.html
Copyright © 2020-2023  润新知