zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    Linux下date命令,格式化输出,时间设置
    Linux scp复制文件,不需要输入密码的技巧
    Linux中cp和scp命令的使用方法
    Linux定时任务系统 Cron
    Eclipse启动Tomcat后无法访问项目
    eclipse下tomcat插件配置说明
    RPM方式安装MySQL5.6和windows下安装mysql解压版
    shell script练习
    Eclipse Java注释模板设置详解
    mysql备份还原数据库
  • 原文地址:https://www.cnblogs.com/cache-yuan/p/12870795.html
Copyright © 2011-2022 走看看