1.研究背景(基本原理)
ifix在使用后台调度时,有时需要将某些事件调度进行手动激活或停止。对于运营人员来说,切换到编辑模式来做,过于复杂,遂实现在运行态实现该功能。
基本原理:
通过后台找到确定的event对象,通过该对象的StopEvent,StartEvent方法实现停止和激活功能,通过Status方法实现对该事件对象状态查看。
2.实现方法
准备工作:在界面上做两个按钮,分别用来实现激活和停止调度功能。
分别对该两按钮进行编程如下:
1.激活按钮:(对点位状态进行弹窗显示)
Private Sub CommandButton1_Click()
Dim Var1 As Object
Dim Var2 As Object
Dim strMsg As Boolean
Dim Msg As String
Set Var1 = GetObject(, "FixBackGroundServer.Application")
Set Var2 = Var1.System.FindObject("tt.FixEvent1")
Var2.StartEvent
strMsg = Var2.Status
If strMsg = True Then
Msg = "该点位已激活"
End If
MsgBox Msg, vbOKOnly, "Message"
End Sub
2.停止按钮(使用循环对多个事件进行操作)
Private Sub CommandButton2_Click()
Dim Var1 As Object
Dim Var2 As Object
'Dim al As Variant
'al = Array("tt.FixEvent1", "tt.FixEvent2", "tt.FixEvent3", "tt.FixEvent4", "tt.FixEvent5")
Set Var1 = GetObject(, "FixBackGroundServer.Application")
'For Each i In al
' Set Var2 = Var1.System.FindObject("tt.FixEvent" + i)
' Var2.StopEvent
' Next i
For i = 1 To 5
Set Var2 = Var1.System.FindObject("tt.FixEvent" + CStr(i))
Var2.StopEvent
Next i
'Set Var2 = Var1.System.FindObject("tt.FixEvent1")
End Sub
3.总结
对功能的相应新增,主要还是需要对ifix相关属性文档进行深入查看,掌握VB一定基础编程即可。
4.实际效果补充
现场实际测试下来,需要补充两个问题:
1.激活和停止状态显示
新建模块进行统一调用,在模块中将该点.A_ALMCK属性进行改变,从而做到激活/停止显示不同状态区分。
Public Sub AlarmCheck(ByVal AlarmName As String, ByVal Tagname As String)
Dim Var1 As Object
Dim Var2 As Object
Dim strMsg As Boolean
Dim Msg As String
Dim tag As String
Dim lValue As String
Dim VALUE1 As String
VALUE1 = "NONE"
Set Var1 = GetObject(, "FixBackGroundServer.Application")
Set Var2 = Var1.System.FindObject(AlarmName)
tag = "Fix32.Fix." + Tagname + ".A_ALMCK"
lValue = ReadValue(tag)
If StrComp(lValue, VALUE1) = 1 Then
Shell (System.BasePath & "\DBBLOAD -DDATABASE")
Var2.StartEvent
strMsg = Var2.Status
writevalue "COS", tag
If strMsg = True Then
Msg = "该点位已激活"
End If
MsgBox Msg, vbOKOnly, "Message"
Shell (System.BasePath & "\DBBSAVE -DDATABASE")
Else
Var2.StopEvent
writevalue "NONE", tag
Shell (System.BasePath & "\DBBSAVE -DDATABASE")
Msg = "该点位已停止"
MsgBox Msg, vbOKOnly, "Message"
End If
End Sub
Private Sub CommandButton3_Click()
Call AlarmCheck("tt.FixEvent1", "test3")
End Sub
以该点状态为区分,可进行可视化或颜色区分来作为激活停止标志。
Fix32.FIX.TEST3.A_ALMCK = "NONE"
2.停止转为激活后,出现该点位误报问题
未解决误报问题,在激活前利用DBBLOAD 函数将数据重载解决。