⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dwcom.cls

📁 一个水情自动测报系统的接收例程
💻 CLS
📖 第 1 页 / 共 3 页
字号:
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 + -