gas = "select * from WXY_IsWarn where Is_Warn = 1"
Adodc2.RecordSource = gas
Adodc2.Refresh
Set ssr1 = Adodc2.Recordset
boom3 = False
'If ssr1.Fields(7).Value = 1 Then
If Check4(7).Value = 0 Then 'check4(7)未选中
If ssr1.RecordCount = 0 Then 'sql的值为0,正常状态
Alame = "Null"
Check4(7).ForeColor = vbBlack
Else
Check4(7).ForeColor = vbRed
If ssr1.RecordCount > 0 Then 'sql 值为1,报警状态
gas_device = "select WXYMC from WXY_IsWarn where Is_Warn = 1"
Adodc2.RecordSource = gas
Adodc2.Refresh
Set ssr2 = Adodc2.Recordset
Alame = ssr2.Fields("WXYMC") 'LED大屏显示
boom3 = True
If Not boomChk Then '在text里只显示一次
List1.AddItem Check4(7).Caption & " " & Now(), 0 '
boomChk = True
' Call startAlarm
End If
Else
boomChk = False
End If
End If
Else 'check选中时,报警取消
Alame = "Null"
Check4(7).ForeColor = vbBlack
End If-----------------------------------------到这为止是checkbox check4(7)所代表的设备报警 If isAlarm Then
din1 = nAlarm
din2 = &HFF
Else
din1 = ReadByte(mindex, 0)
din2 = ReadByte(mindex, 1)
End If
If nn <> din1 Then
rr = 0
For ii = 7 To 0 Step -1
rr = rr * 2
If Check3(ii).Value = 0 Then
rr = rr + 1
End If
Next ii
Text1.Text = "din1=" + Hex(din1) + " din2=" + Hex(din2)
nn = din1 '//--------------------- SQL
sss = "select * from con_receive"
Adodc1.RecordSource = sss
Adodc1.Refresh
Set ssr = Adodc1.Recordset
boom = False
Alame = "Null"
For I = 0 To &H7
ssr.Fields(2).Value = Now()
If (din1 And 1) = 1 Then
ssr.Fields(3).Value = 0
Check3(I).ForeColor = vbBlack
Else
Check3(I).ForeColor = vbRed
If Check3(I).Value = 0 Then
Alame = Check3(I).Caption
boom = True
ssr.Fields(3).Value = 1
List1.AddItem Check3(I).Caption & " " & Now(), 0
Else
ssr.Fields(3).Value = 0
End If
End If
din1 = Fix(din1 / 2)
ssr.MoveNext
Next I
End If'----------------------------------------到这是另外一组设备报警
Winsock1.SendData Alame If boom Or boom1 Or boom3 Then
Call startAlarm '报警
'Text1.Text = "报警"
Else
Call stopAlarm '停止
'Text1.Text = "停止"
End If End Sub
上面check4(7)b报警是我在别人代码上面修改的,现在问题是一运行测试时 报警的时候只显示我写的这段报警,下面的报警不显示,应该是报警变量Alame被我占用了。请问 该如何修改才能当2个设备的报警状态都能显示呢?谢谢
我现在想的是应该加个判断,但是不知道该怎么加?请高手指点一下
Adodc2.RecordSource = gas
Adodc2.Refresh
Set ssr1 = Adodc2.Recordset
boom3 = False
'If ssr1.Fields(7).Value = 1 Then
If Check4(7).Value = 0 Then 'check4(7)未选中
If ssr1.RecordCount = 0 Then 'sql的值为0,正常状态
Alame = "Null"
Check4(7).ForeColor = vbBlack
Else
Check4(7).ForeColor = vbRed
If ssr1.RecordCount > 0 Then 'sql 值为1,报警状态
gas_device = "select WXYMC from WXY_IsWarn where Is_Warn = 1"
Adodc2.RecordSource = gas
Adodc2.Refresh
Set ssr2 = Adodc2.Recordset
Alame = ssr2.Fields("WXYMC") 'LED大屏显示
boom3 = True
If Not boomChk Then '在text里只显示一次
List1.AddItem Check4(7).Caption & " " & Now(), 0 '
boomChk = True
' Call startAlarm
End If
Else
boomChk = False
End If
End If
Else 'check选中时,报警取消
Alame = "Null"
Check4(7).ForeColor = vbBlack
End If-----------------------------------------到这为止是checkbox check4(7)所代表的设备报警 If isAlarm Then
din1 = nAlarm
din2 = &HFF
Else
din1 = ReadByte(mindex, 0)
din2 = ReadByte(mindex, 1)
End If
If nn <> din1 Then
rr = 0
For ii = 7 To 0 Step -1
rr = rr * 2
If Check3(ii).Value = 0 Then
rr = rr + 1
End If
Next ii
Text1.Text = "din1=" + Hex(din1) + " din2=" + Hex(din2)
nn = din1 '//--------------------- SQL
sss = "select * from con_receive"
Adodc1.RecordSource = sss
Adodc1.Refresh
Set ssr = Adodc1.Recordset
boom = False
Alame = "Null"
For I = 0 To &H7
ssr.Fields(2).Value = Now()
If (din1 And 1) = 1 Then
ssr.Fields(3).Value = 0
Check3(I).ForeColor = vbBlack
Else
Check3(I).ForeColor = vbRed
If Check3(I).Value = 0 Then
Alame = Check3(I).Caption
boom = True
ssr.Fields(3).Value = 1
List1.AddItem Check3(I).Caption & " " & Now(), 0
Else
ssr.Fields(3).Value = 0
End If
End If
din1 = Fix(din1 / 2)
ssr.MoveNext
Next I
End If'----------------------------------------到这是另外一组设备报警
Winsock1.SendData Alame If boom Or boom1 Or boom3 Then
Call startAlarm '报警
'Text1.Text = "报警"
Else
Call stopAlarm '停止
'Text1.Text = "停止"
End If End Sub
上面check4(7)b报警是我在别人代码上面修改的,现在问题是一运行测试时 报警的时候只显示我写的这段报警,下面的报警不显示,应该是报警变量Alame被我占用了。请问 该如何修改才能当2个设备的报警状态都能显示呢?谢谢
我现在想的是应该加个判断,但是不知道该怎么加?请高手指点一下
"If nn <> din1 Then " 似乎是第二条报警的条件,你给出的程序中没有这个nn的相关内容啊?