Sub Cb485STS_Read(is_CMD As String)
Dim ReadCommand As String
Dim dbbh, Sjbs, temp1, ins2, ins3, ins4 As String
Dim Start, xms, zjs, i, j As Integer
Dim L, kzm, sjycd, sjbs2 As Long
Dim Ins As Variant
On Error GoTo errHandler
zjs = Val(Right(c8.zjs, 2))
kzm = Val("&H" + Right(c8.kzm, 2))
sjycd = Val("&H" + Right(c8.sjycd, 2))
sjbs2 = Val("&H" + Right(c8.sjbs2, 2))
'Csh = 211
W(li) = 254
li = li + 1
W(li) = 254
li = li + 1
W(li) = 254
li = li + 1
Csh = 0
W(li) = 104
Csh = Csh + W(li)
li = li + 1
Call MlzhSTS(c8.Number, 6, 0)
W(li) = 104
Csh = Csh + W(li)
li = li + 1
W(li) = kzm
Csh = Csh + W(li)
li = li + 1
W(li) = sjycd
Csh = Csh + W(li)
li = li + 1
Call MlzhSTS(c8.Sjbs, 2, 0)
If sjycd = 3 Then
Call MlzhSTS(c8.sjbs2, 1, 0)
End If
Csh = Csh Mod 256
W(li) = Csh
li = li + 1
W(li) = 22
c8.Send = ""
ins2 = ""
For i = 0 To UBound(W)
ins2 = ins2 & Right("0" & CStr(Hex(W(i))), 2) & " "
Next
c8.Send = ins2
'设置COM端口
OpenCommSTS (0)
If CommOpen < 0 Then
Exit Sub
End If
'向串口发读命令
MSComm1.Output = CVar(W)
'延时0.5秒
Start1 = Timer
Do While Timer < Start1 + 3
DoEvents ' 将控制让给其他程序。
Loop
Ins = MSComm1.Input
Arr = Ins
i = 0
c8.Rece = ""
ins3 = ""
For i = 0 To UBound(Arr)
ins3 = ins3 & Right("0" & CStr(Hex(Arr(i))), 2) & " "
Next
c8.Rece = ins3
c8.Rece = Right(c8.Rece & String((255 - Len(c8.Rece)), " "), 255)
Do While i < j '12个固定字节,计算校验核计算到数据标识,Data之前
Csh = Csh + Val(Arr(Start + i))
i = i + 1
Loop
Csh = Csh Mod 256
If Csh <> Csh1 Then
c8.Flag = 3
is_CMD = c8.Flag & c8.Cwz & c8.Send & c8.Rece & c8.Data
'LB_MSG.Caption = "效验错误!"
'LB_MSG.Caption = "效验核错误!"
LB_MSG.Caption = "Verify Error!"
Exit Sub
End If
c8.Flag = "1"
'LB_MSG.Caption = "抄表成功!"
LB_MSG.Caption = "Read Success!"
'返回数据
'is_CMD = c8.Flag & " " & c8.Send & c8.Rece & c8.Data
is_CMD = c8.Flag & "00" & c8.Send & c8.Rece & c8.Data Exit Sub
'错误处理
errHandler:
If Err.Number = 9 Then
c8.Flag = "3"
is_CMD = c8.Flag & c8.Cwz & c8.Send & c8.Rece & c8.Data
'LB_MSG.Caption = "没有数据返回!"
LB_MSG.Caption = "No data returned two!"
Else
c8.Flag = "3"
is_CMD = c8.Flag & c8.Cwz & c8.Send & c8.Rece & c8.Data
'LB_MSG.Caption = "抄表失败!"
LB_MSG.Caption = "Read failure!"
End If
End Sub
Dim ReadCommand As String
Dim dbbh, Sjbs, temp1, ins2, ins3, ins4 As String
Dim Start, xms, zjs, i, j As Integer
Dim L, kzm, sjycd, sjbs2 As Long
Dim Ins As Variant
On Error GoTo errHandler
zjs = Val(Right(c8.zjs, 2))
kzm = Val("&H" + Right(c8.kzm, 2))
sjycd = Val("&H" + Right(c8.sjycd, 2))
sjbs2 = Val("&H" + Right(c8.sjbs2, 2))
'Csh = 211
W(li) = 254
li = li + 1
W(li) = 254
li = li + 1
W(li) = 254
li = li + 1
Csh = 0
W(li) = 104
Csh = Csh + W(li)
li = li + 1
Call MlzhSTS(c8.Number, 6, 0)
W(li) = 104
Csh = Csh + W(li)
li = li + 1
W(li) = kzm
Csh = Csh + W(li)
li = li + 1
W(li) = sjycd
Csh = Csh + W(li)
li = li + 1
Call MlzhSTS(c8.Sjbs, 2, 0)
If sjycd = 3 Then
Call MlzhSTS(c8.sjbs2, 1, 0)
End If
Csh = Csh Mod 256
W(li) = Csh
li = li + 1
W(li) = 22
c8.Send = ""
ins2 = ""
For i = 0 To UBound(W)
ins2 = ins2 & Right("0" & CStr(Hex(W(i))), 2) & " "
Next
c8.Send = ins2
'设置COM端口
OpenCommSTS (0)
If CommOpen < 0 Then
Exit Sub
End If
'向串口发读命令
MSComm1.Output = CVar(W)
'延时0.5秒
Start1 = Timer
Do While Timer < Start1 + 3
DoEvents ' 将控制让给其他程序。
Loop
Ins = MSComm1.Input
Arr = Ins
i = 0
c8.Rece = ""
ins3 = ""
For i = 0 To UBound(Arr)
ins3 = ins3 & Right("0" & CStr(Hex(Arr(i))), 2) & " "
Next
c8.Rece = ins3
c8.Rece = Right(c8.Rece & String((255 - Len(c8.Rece)), " "), 255)
Do While i < j '12个固定字节,计算校验核计算到数据标识,Data之前
Csh = Csh + Val(Arr(Start + i))
i = i + 1
Loop
Csh = Csh Mod 256
If Csh <> Csh1 Then
c8.Flag = 3
is_CMD = c8.Flag & c8.Cwz & c8.Send & c8.Rece & c8.Data
'LB_MSG.Caption = "效验错误!"
'LB_MSG.Caption = "效验核错误!"
LB_MSG.Caption = "Verify Error!"
Exit Sub
End If
c8.Flag = "1"
'LB_MSG.Caption = "抄表成功!"
LB_MSG.Caption = "Read Success!"
'返回数据
'is_CMD = c8.Flag & " " & c8.Send & c8.Rece & c8.Data
is_CMD = c8.Flag & "00" & c8.Send & c8.Rece & c8.Data Exit Sub
'错误处理
errHandler:
If Err.Number = 9 Then
c8.Flag = "3"
is_CMD = c8.Flag & c8.Cwz & c8.Send & c8.Rece & c8.Data
'LB_MSG.Caption = "没有数据返回!"
LB_MSG.Caption = "No data returned two!"
Else
c8.Flag = "3"
is_CMD = c8.Flag & c8.Cwz & c8.Send & c8.Rece & c8.Data
'LB_MSG.Caption = "抄表失败!"
LB_MSG.Caption = "Read failure!"
End If
End Sub
http://download.csdn.net/source/1262066