Intouch/ifix语音报警系统制作(3-利用自定义过程和函数,重构先前版本)
在语音模块嵌入了半年左右的时间,经过实际使用发现,代码冗余,重复太多,维护较难,新增也不易,故而对整个框架进行整理,实现简单添加,维护容易的目的。
1.代码优化
1.1构建自定义过程
name 参数代表设备名
tt代表要打开的画面名(故障画面/报警画面)
sqll代表要存入数据库的内容(故障/报警)
Public Sub Sound(ByVal name As String, ByVal tt As String, ByVal sql As String)
On Error Resume Next
Dim workspace As Object
Set workspace = GetObject("", "Workspace.Application")
Dim tagvar As Object
Set tagvar = workspace.Documents("User").Page.FindObject("PicNumBer")
tagvar.Description = nameDim TOP As Integer
Dim LEFT As Integer
TOP = Int((50 * Rnd) + 1)
LEFT = Int((50 * Rnd) + 1)Dim StrD As String
Dim userid As String
Dim username As String
Dim groupname As String
System.FixGetUserInfo userid, username, groupname
StrD = Format(Now, "yyyy-mm-dd hh:mm:ss")
Set conODBC = New ADODB.Connection
conODBC.ConnectionString = "DSN=QPWS;UID=sa;PWD=;"
conODBC.Open "QPWS", "sa", ""
conODBC.Execute "insert into kaitingshijian(DateTimee,mingcheng,neirong,operator) values ('" + StrD + "','" + name + "', '" + sql + "', '" + username + "')"
conODBC.Close
openpicture tt, "", TOP, LEFT, 0, , NONE, "", True
End Sub
1.2 调度内容重构
直接使用关键字Call 自定义过程名的方法来使用。
Private Sub FixEvent1_WhileTrue()Call Sound("二期粗格栅1号污水泵", "故障报警.grf", "故障")End Sub
2.细节优化
2.1调度后台被关闭时,自动打开
由于本系统依赖于后台事件调度,故而保持fixbackground.exe后台的运行很关键。
编写函数(摘抄于网上大神)
Public Function CheckExeIsRun(exeName As String) As BooleanOn Error GoTo ErrDim WMIDim ObjDim ObjsCheckExeIsRun = FalseSet WMI = GetObject("WinMgmts:")Set Objs = WMI.InstancesOf("Win32_Process")For Each Obj In ObjsIf (InStr(UCase(exeName), UCase(Obj.Description)) <> 0) ThenCheckExeIsRun = TrueIf Not Objs Is Nothing Then Set Objs = NothingIf Not WMI Is Nothing Then Set WMI = NothingExit FunctionEnd IfNextIf Not Objs Is Nothing Then Set Objs = NothingIf Not WMI Is Nothing Then Set WMI = NothingExit Function
Err:If Not Objs Is Nothing Then Set Objs = NothingIf Not WMI Is Nothing Then Set WMI = Nothing
End Function
2.2函数调用
关于函数调用,这要用到定时器插件。再看你的画面中一直保持不变的东西,比如标题栏,然后将定时器放置在标题栏中,并编写调用函数
Private Sub diaodu1_OnTimeOut(ByVal lTimerId As Long)If CheckExeIsRun("FIXBACKGROUNDSERVER.EXE") = False ThenShell System.FixPath(Base_Path) & "\FIXBACKGROUNDSERVER.EXE"End If
End Sub
3.备注补充
有些可能遇到另外一种特殊情况:就是报“自动化错误”弹窗,而且不点开fixbackground后台框,无法发现。这样在无法找到原因的情况下,有一个权宜之计-使用定时器,定时关闭fixbackground后台。(每天之行一次:24:00:02)
Private Sub killdiaodu_OnTimeOut(ByVal lTimerId As Long)
If CheckExeIsRun("FIXBACKGROUNDSERVER.EXE") = True Then
Shell System.FixPath(Base_Path) & "\diaodu.bat"
End If
End Sub
diaodu.bat
@echo off
taskkill /im FixBackgroundServer.exe /f
EXIT
至此,一个完整的语音报警系统模块,可以投入正式的生产使用之中。
转载于:https://www.cnblogs.com/cache-yuan/p/10104240.html
Intouch/ifix语音报警系统制作(3-利用自定义过程和函数,重构先前版本)相关推荐
- Intouch/ifix语音报警系统制作(1-初步添加插件和简单使用)
工控项目最近升级改造,需要使用Intouch/ifix提供一个语音报警功能.这个不像先前提供的单一的声音报警,业主方要求能详细的提供某某水泵或者是某某设备故障报警,这就要求我们这边对语音解析或者基础控 ...
- 易语言数据类型与c 对照,易语言利用自定义数据类型和数组. 制作键对值操作类/内存配置...
易语言利用自定义数据类型和数组. 制作键对值操作类/内存配置.版本 2 .支持库 spec .子程序 _临时子程序 .局部变量 test, classKeyValue .局部变量 局_取值方法2, ...
- Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...
- Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习...
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...
- 鼎捷T100——利用自定义查询维护作业(azzi310)开发建立xg报表
自定义查询维护作业(azzi310)制作报表 文章目录 前言 一.写sql 二.启用azzi310进行维护 1.新增作业 3.细节设计 三.通过azzi910维护作业 总结 前言 最近有个简易的查询报 ...
- 混合云备份利用自定义Workflow保护MySQL的实践
众所周知数据库的保护面临着诸多问题,其中之一就是维护数据底层文件的一致性.除了与数据库应用的深度集成的备份方案(如SAP HANA Backint等),松耦合的通用备份软件较难做到完美的数据库的一致性 ...
- DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别、模型评估(99.4%)
DL之CNN:利用自定义DeepConvNet[7+1]算法对mnist数据集训练实现手写数字识别.模型评估(99.4%) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 netwo ...
- DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别并预测(超过99%)
DL之CNN:利用自定义DeepConvNet[7+1]算法对mnist数据集训练实现手写数字识别并预测(超过99%) 目录 输出结果 设计思路 核心代码 输出结果 准确度都在99%以上 1.出错记录 ...
- AI机器人:机器人语音文本智能交互之自定义软件——实现模拟中本聪与V神跨时空畅谈
AI机器人:机器人语音&文本智能交互之自定义软件--实现模拟中本聪与V神跨时空畅谈 目录 设计界面 设计思路 动画演示 设计界面 设计思路 动画演示
- DL之simpleNet:利用自定义的simpleNet(设好权重)对新样本进行预测、评估、输出梯度值
DL之simpleNet:利用自定义的simpleNet(设好权重)对新样本进行预测.评估.输出梯度值 导读 理解神经网络内部的数学机制 目录 输出结果 核心代码 输出结果 输出权重参数: [[-0. ...
最新文章
- vue 判断同一数组内的值是否一直_前端代码+后端API,值得一学的Vue高仿音乐播放器实战项目
- 计算机文化基础课程实验,山东经贸职业学院计算机文化基础课程实验教学大纲.doc...
- Java面试之锁-公平锁和非公平锁
- 放弃 PHP,选择 Node.JS 的 8 个理由!
- 马自达 3 为什么抛弃了触摸屏?
- Linux编译安装GCC-5.1.0
- 简单分布式系统构建知识
- 程序员代码面试指南 IT名企算法与数据结构题目最优解
- Win11更新后电脑没有声音,声卡驱动失效,卸载重装依然无效
- AndroidStudio使用之仿微信首页界面
- C/C++ 项目必读:代码格式化和静态分析检查的一站式工作流 Cpp Linter
- 植物大战僵尸——纯C实现无限阳光
- Docker容器化实战第二课 镜像、容器、仓库详解
- 精读论文:Multi-Task Learning as Multi-Objective Optimization(附翻译)
- 【DEBUG】2021-06-27 不定期的自我检讨002
- css3之[2D转化,动画,3D转化] 彩蛋之3D立方体
- 计算广告(1)---一些概念
- 中国新零售行业展望及十四五发展规划建议报告2022-2028年
- ENVI5.3 影像数据辐射定标及大气校正实验处理-多光谱遥感数据
- vue3 使用render函数渲染插槽,以Naive UI为例
热门文章
- 开放 API 接口签名验证,让你的接口从此不再裸奔 !
- 面试遇到不会回答的问题,如何力挽狂澜 ?
- 阿里Goldeneye业务监控平台之架构演进,如何实时处理100T+/天的日志量?
- 你真的会调试 Linux 内核故障吗,看完这一篇后你会茅塞顿开的!
- 理解HTTP 代理,负载均衡,缓冲(Buffering)和缓存(Caching)
- Linux内核4.14 LTS发布:那些最新最好的功能特性
- 帖子内容 mysql_mysql-SQL:选择最新主题和最新帖子,按论坛...
- asp 文本转时间_[译]使用LazZiya.ExpressLocalization开发多语言支持的ASP.NET Core 2.x项目...
- python表格控件_tkinter 控件 Treeview 表格数据
- react-demo