📄 dwcom.cls
字号:
Else
If inchar = QUHAO Then
imm2 = 1
inx2(1) = inchar
Else
imm2 = 0
End If
End If
Exit Sub
Case 6
If pd1(inchar) Then
imm2 = 7
inx2(7) = inchar
Else
If inchar = QUHAO Then
imm2 = 1
inx2(1) = inchar
Else
imm2 = 0
End If
End If
Exit Sub
Case 7
If inchar = (inx2(1) Xor _
inx2(2) Xor _
inx2(3) Xor _
inx2(4) Xor _
inx2(5) Xor _
inx2(6) Xor _
inx2(7)) Then
Call R_Date2(inx2(2), inx2(3), inx2(4), inx2(5), inx2(6), inx2(7))
imm2 = 0
Else
imm2 = 0
End If
Case Else
imm = 0
End Select
End Sub
Private Sub return3(ByVal inchar As Byte)
Select Case imm3
Case 0
If inchar = SMART_QUHAO Then
inx3(0) = SMART_QUHAO
imm3 = 1
End If
Exit Sub
Case 1, 2
inx3(imm3) = inchar
imm3 = imm3 + 1
Exit Sub
Case 3
If inchar = ZHEN Then
inx3(3) = inchar
imm3 = 4
Else
If inchar = SMART_QUHAO Then
imm3 = 1
inx2(1) = inchar
Else
imm3 = 0
End If
End If
Exit Sub
Case Is >= 4
inx3(imm3) = inchar
imm3 = imm3 + 1
If imm3 = inx3(4) + 4 + 2 + 1 Then '长度+校验2字节够了
If GetCrc(inx3(0), 18) = 1 Then '校验正确处理程序
'Max.MSComm1.RThreshold = 0 '关中断
Call r_date3
'Max.MSComm1.RThreshold = 1 '开中断
End If
imm3 = 0
End If
Exit Sub
Case Else
End Select
End Sub
Private Sub r_date3()
Dim addr As Integer
Dim total As Single
Dim t As Date
Dim st, ST1 As String
Dim tabl As Recordset
Dim d(0 To 3) As Byte
addr = inx3(2)
If addr < 0 Or addr > 255 Then Exit Sub
If Not pd5(addr, &HC, zijie, ID) Then Exit Sub
d(3) = inx3(12)
d(2) = inx3(13)
d(1) = inx3(14)
d(0) = inx3(15)
CopyMem total, d(0), 4
If total < 0 Then Exit Sub
'If inx3(8) <= 0 Or inx3(8) > 12 Then Exit Sub '月
'If inx3(9) <= 0 Or inx3(9) > 31 Then Exit Sub '日
'If inx3(10) < 0 Or inx3(10) >= 24 Then Exit Sub '时
'If inx3(11) < 0 Or inx3(11) >= 60 Then Exit Sub '分
't = DateSerial(inx3(7), inx3(8), inx3(9)) + TimeSerial(inx3(10), inx3(11), 0)
t = Now()
Total_Rain = Total_Rain + 1
ST1 = Format$(addr, "000") + "号站 " + "雨量" + " " + Format$(total, "000.0") + " " + Format$(t, "yyyy-mm-dd hh:mm:ss")
Call Write_Act(addr, ST1, &HC)
ST1 = "SELECT * from 雨量排除 WHERE 雨量排除 = " & CStr(total)
Set tabl = New Recordset
tabl.Open ST1, DB1, adOpenStatic, adLockOptimistic
If tabl.BOF Then
ST1 = "INSERT INTO 雨量 (站号,雨量,时间) VALUES (" & _
CStr(addr) & "," & _
CStr(total) & "," & _
zhong_time_symbol & Format$(t, "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & ")"
DB1.Execute ST1
Max.Winsock1.SendData "1"
End If
st = "INSERT INTO 原始数据 (站号,数值,时间,物理量) VALUES (" & _
CStr(addr) & "," & _
CStr(total) & "," & _
zhong_time_symbol & Format$(t, "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & "," & _
"'雨量')"
DB1.Execute st
Open App.Path & file_Path & Format$(addr, "000") & ".txt" For Append As #2
Print #2, Format$(addr, "000") & " " & Format$(total, "000.0") & " " & Format$(t, "yyyy-mm-dd hh:mm:ss")
Close #2
Call Change_StatusBar
Set tabl = Nothing
End Sub
Private Sub R_Date2(ByVal i2 As Byte, _
ByVal i3 As Byte, _
ByVal i4 As Byte, _
ByVal i5 As Byte, _
ByVal i6 As Byte, _
ByVal i7 As Byte)
Dim feature As Byte
Dim total As Single
Dim addr As Byte
Dim st, Active_String, ST1 As String
Dim tabl As Recordset
On Error Resume Next
feature = (i4 And &HF0) \ 16
total = CInt(find(i5)) * 256 + CInt(find(i6)) * 16 + CInt(find(i7))
addr = find(i2) * 16 + find(i3)
If pd5(addr, feature, zijie, ID) Then
Select Case feature
Case &HC
st = "雨量"
Total_Rain = Total_Rain + 1
Active_String = Format$(addr, "000") + "号站 " + st + " " + Format$(total, "0000") + " " + Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Call Write_Act(addr, Active_String, &HC)
Case &HF
st = "水位"
Total_Water = Total_Water + 1
Active_String = Format$(addr, "000") + "号站 " + st + " " + Format$(total, "0000") + " " + Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Call Write_Act(addr, Active_String, &HF)
Case &HD
st = "电压"
Total_V = Total_V + 1
Active_String = Format$(addr, "000") + "号站 " + st + " " + Format$(total, "0000") + " " + Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Call Write_Act(addr, Active_String, &HD)
End Select
ST1 = "SELECT * from " & st & "排除 WHERE " & st & "排除 = " & CStr(total)
Set tabl = New Recordset
tabl.Open ST1, DB1, adOpenStatic, adLockOptimistic
If tabl.BOF Then
Select Case st
Case "雨量"
ST1 = "INSERT INTO 雨量 (站号,雨量,时间) VALUES (" & _
CStr(addr) & "," & _
CStr(total) & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & ")"
DB1.Execute ST1
Max.Winsock1.SendData "1"
Case "水位"
ST1 = "INSERT INTO 水位 (站号,水位,时间) VALUES (" & _
CStr(addr) & "," & _
Format$(((total + Find_WeiTiao(addr)) / 100) + Find_GaoCheng(addr), "0.00") & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & ")"
DB1.Execute ST1
Max.Winsock1.SendData "2"
Case "电压"
ST1 = "INSERT INTO 电压 (站号,电压,时间) VALUES (" & _
CStr(addr) & "," & _
Format$(total / 100, "0.00") & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & ")"
DB1.Execute ST1
Max.Winsock1.SendData "3"
Case Else
End Select
End If
st = "INSERT INTO 原始数据 (站号,数值,时间,物理量) VALUES (" & _
CStr(addr) & "," & _
CStr(total) & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & "," & _
"'" & st & "')"
DB1.Execute st
Open App.Path & file_Path & Format$(addr, "000") & ".txt" For Append As #2
Print #2, Format$(addr, "000") & " " & Format$(total, "0000") & " " & Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Close #2
Call Change_StatusBar
End If
Set tabl = Nothing
End Sub
Private Sub R_Date(ByVal i0 As Byte, ByVal i1 As Byte, ByVal i2 As Byte, ByVal i3 As Byte)
Dim feature, datechar0, datechar1 As Byte
Dim total As Single
Dim addrchar0, addrchar1 As Byte
Dim addr As Byte
Dim st, Active_String, ST1 As String
Dim tabl As Recordset
On Error Resume Next
feature = (i2 And &HF0) \ 16
datechar0 = i2 And &HF
datechar1 = i3
total = CInt(datechar0)
total = CInt(total) * 256 + CInt(datechar1)
addrchar0 = find(i0)
addrchar1 = find(i1)
addr = addrchar0 * 16 + addrchar1
Select Case feature
Case &HC
st = "雨量"
Total_Rain = Total_Rain + 1
Active_String = Format$(addr, "000") + "号站 " + st + " " + Format$(total, "0000") + " " + Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Call Write_Act(addr, Active_String, &HC)
Case &HF
st = "水位"
Total_Water = Total_Water + 1
Active_String = Format$(addr, "000") + "号站 " + st + " " + Format$(total, "0000") + " " + Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Call Write_Act(addr, Active_String, &HF)
Case &HD
st = "电压"
Total_V = Total_V + 1
Active_String = Format$(addr, "000") + "号站 " + st + " " + Format$(total, "0000") + " " + Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Call Write_Act(addr, Active_String, &HD)
End Select
ST1 = "SELECT * from " & st & "排除 WHERE " & st & "排除 = " & CStr(total)
Set tabl = New Recordset
tabl.Open ST1, DB1, adOpenStatic, adLockOptimistic
If tabl.BOF Then
Select Case st
Case "雨量"
ST1 = "INSERT INTO 雨量 (站号,雨量,时间) VALUES (" & _
CStr(addr) & "," & _
CStr(total) & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & ")"
DB1.Execute ST1
Max.Winsock1.SendData "1"
Case "水位"
ST1 = "INSERT INTO 水位 (站号,水位,时间) VALUES (" & _
CStr(addr) & "," & _
Format$(((total + Find_WeiTiao(addr)) / 100) + Find_GaoCheng(addr), "0.00") & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & ")"
DB1.Execute ST1
Max.Winsock1.SendData "2"
Case "电压"
ST1 = "INSERT INTO 电压 (站号,电压,时间) VALUES (" & _
CStr(addr) & "," & _
Format$(total / 100, "0.00") & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & ")"
DB1.Execute ST1
Max.Winsock1.SendData "3"
Case Else
End Select
End If
st = "INSERT INTO 原始数据 (站号,数值,时间,物理量) VALUES (" & _
CStr(addr) & "," & _
CStr(total) & "," & _
zhong_time_symbol & Format$(Now(), "yyyy-mm-dd hh:mm:ss") & zhong_time_symbol & "," & _
"'" & st & "')"
DB1.Execute st
Open App.Path & file_Path & Format$(addr, "000") & ".txt" For Append As #2
Print #2, Format$(addr, "000") & " " & Format$(total, "0000") & " " & Format$(Now(), "yyyy-mm-dd hh:mm:ss")
Close #2
Call Change_StatusBar
Set tabl = Nothing
End Sub
Private Function pd1(ByVal char As Byte) As Boolean
Dim i As Integer
On Error Resume Next
For i = 0 To 15
If char = jycode(i) Then
pd1 = True
Exit Function
End If
Next i
pd1 = False
End Function
Private Function pd2(ByVal char As Byte) As Integer
On Error Resume Next
Select Case (char And &HF0)
Case &H0, &H30 '0人工置数参数一,3人工置数参数二
pd2 = 2
Case &HC0, &HD0, &HF0 'C雨量,D电压,F水位
pd2 = 1
Case Else
pd2 = 0
End Select
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -