ifix -研究调度事件(event)在运行态进行激活和停止的方法

本文档介绍了如何在IFix后台实现事件的手动激活和停止功能,通过VB编程实现按钮控制,以及对状态的显示和误报问题的处理。在运行态下,通过对象的StopEvent和StartEvent方法完成事件操作,并通过修改.A_ALMCK属性来显示状态变化。实际测试中发现激活后可能出现误报,解决方案是在激活前使用DBBLOAD重载数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 函数将数据重载解决。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值