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
更多工业交流和工作帮助可以订阅我的个人订阅号哦!
ifix 自动化(Automation)错误弹窗的解决方案的更多相关文章
- 自动化(Automation)兼容的数据类型
自动化(Automation)兼容的数据类型
- [Windows Phone] APP上架,遇到错误2001的解决方案。(Error:2001)
[Windows Phone] APP上架,遇到错误2001的解决方案.(Error:2001) 问题情景 最近在开始玩Windows Phone的开发,开发的过程中虽然有点小挫折,但是参考网络许多前 ...
- 常见ORACLE错误,及解决方案(遇则即时更新)
1.当登陆时提示“ORA-03113:通信通道的文件结束”时: 解决方案: 需在X:\oraclexe\app\oracle\product\10 ...
- ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)
ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1) (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26 ...
- 用户'sa'登录失败(错误18456)解决方案图解
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://thenear.blog.51cto.com/4686262/865544 htt ...
- Rose2003执行出现 -2147417848 (80010108)':Automation 错误
上篇博客在结尾的时候.我提到了Ration Rose2003执行出现"-2147417848 (80010108)':Automation错误"的问题.今天这篇博客就来介绍一下怎样 ...
- 打开WPS时出现MathType错误弹窗怎么办
MathType是一款特别优秀的公式编辑器,特别是在文档中出现大量的复杂数学公式需要编辑时.不过MathType与Office的兼容性还算好,与WPS的兼容性要略逊一筹,有时候会出现如下的报错弹窗.提 ...
- Layer 一个让你想到即可做到的web弹窗/层 解决方案
最近工作上面用到的web弹窗组件layer layer是一款口碑极佳的web弹层组件,她具备全方位的解决方案,致力于服务各个水平段的开发人员,您的页面会轻松地拥有丰富而友好的操作体验. layer官方 ...
- 关于“System.Data.OleDb.OleDbException,外部数据库驱动程序 (1) 中的意外错误。”的解决方案
网站之前运行一直很正常,但有一次用户在导入格式为xls的excel文件,发生了错误,跟踪错误后抛出如下的异常: 错误提示: 未处理System.Data.OleDb.OleDbException HR ...
随机推荐
- SpringBoot 自动配置原理,翻源码看一下
初始化一个Springboot项目,在主启动类会有这么一个注解:@SpringBootApplication,自动装配的秘密全在主启动类这个注解里面了 点进去一层会发现有三个子注解组成,分别是 @ ...
- Zookeeper 分布式锁 (图解+秒懂+史上最全)
文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...
- 【模拟8.01】string(线段树)
因为题中只有a-z,所以区间中大量字母都是重复的,我们不妨利用桶的性质. 开一棵树,里面维护当前区间内的相同元素,若区间内元素不同,则为零 每次升序操作就先查询一遍区间,用桶将每个区间的a-z元素统计 ...
- SSM框架集成各配置文件
SSM框架集成各配置文件 Spring Spring MVC Mybatis 的整合SpringMVC相当于Spring的一个组件 本来就是一个家族的不存在整合的问题,所以主要就是Spring于Myb ...
- google protobuf的原理和思路提炼
之前其实已经用了5篇文章完整地分析了protobuf的原理.回过头去看,感觉一方面篇幅过大,另一方面过于追求细节和源码,对protobuf的初学者并不十分友好,因此这篇文章将会站在"了解.使 ...
- 微软官方 Win 11 “体检工具”太烂了?开发者自己做了一个
1.Win 10 免费升级到 Win 11 最近微软官方终于宣布了 Windows 11,不仅带来了全新的 UI,而且还有很多新功能:比如支持 Android 应用. 虽然微软官方已说明 Win 10 ...
- IDEA搭建一个SpringBoot项目——十分详细(web+mysql)
前排提示: IDEA版本:IntelliJ IDEA 2021.1.1 专业版(是否为专业版影响不大) 搭建目的:前端web页面能够获取到MySQL数据库中的数据 详细步骤: 1. 创建一个新项目 ...
- Custom Controller CollectionQT样式自定义 001 :SliderLineEdit 滑动输入框
主要是继承QLineEdit类重新实现其鼠标事件,建议禁用输入框默认的菜单项. SliderLineEdit 滑动输入框 参照图形平台 Adobe系列中属性输入框 做的样式,支持点击编辑和长按鼠标拖动 ...
- Centos7.5使用SSH密钥登录
12.1.查看操作系统版本 # cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 12.2.在服务器端创建密钥 # ssh-ke ...
- MySQL参数配置
参数名称 参数说明 缺省值 最低版本要求 user 数据库用户名(用于连接数据库) 所有版本 passWord 用户密码(用于连接数据库) 所有版本 useUnicode 是否使用Unicode字符集 ...