发表于:2007-03-23 19:07:00
楼主
Dim biaozhi As Integer
Dim hnr As Integer
Dim dd As Integer
Dim aa As Double
Dim code As String
Dim cc As String
Dim hnrt As String
Dim dat As String
---------------------------------------------------
Private Sub Command4_Click()
Timer1.Enabled = False
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
dat = "01W000610000"
MSComm1.Output = Chr$(5) + dat + SumChk(dat) + Chr(4)
Timer1.Enabled = True
End Sub
----------------------------------------------------------
Private Sub Command5_Click()
Timer1.Enabled = False
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
dat = "01W000610002"
MSComm1.Output = Chr$(5) + dat + SumChk(dat) + Chr(4)
Timer1.Enabled = True
End Sub
-------------------------------------------
Private Sub Command6_Click()
Timer1.Enabled = False
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
dat = "01W000610004"
MSComm1.Output = Chr$(5) + dat + SumChk(dat) + Chr(4)
Timer1.Enabled = True
End Sub
--------------------------------------------
Private Function SumChk(Dats$) As String
Dim i& '定义i为long型
Dim CHK As Long
For i = 1 To Len(Dats)
CHK = CHK + Asc(Mid(Dats, i, 1))
Next i
SumChk = Right(Hex$(CHK), 2)
End Function
-------------------------------------------
Private Sub Form_Load()
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.CommPort = 1 '用Com1口
MSComm1.Settings = "9600,n,8,1" '通讯参数 波特率 奇偶校验 数据位 停止位
MSComm1.InBufferSize = 64
MSComm1.OutBufferSize = 64
MSComm1.RThreshold = 1 '当接收缓冲区的数据达到RThreshold所设定的字节数时产生OnComm事件
MSComm1.InputMode = 0
MSComm1.InputLen = 1
hnr = 0
hnrt = ""
biaozhi = 0
code = ""
Timer1.Enabled = True
End Sub
----------------------------------------
Private Sub MSComm1_OnComm()
hnrt = MSComm1.Input
For i = 1 To Len(hnrt)
bb = bb + Mid(hnrt, i, 1) '帧校验码FCS
Next i
If biaozhi = 1 Then '检查开始标志位
code = code + bb
If bb = Chr(4) Then '检查结束标志位
Mid(code, 17, 2) = SumChk(Mid(code, 2, 15)) 就是这一步出了问题显示"无效的过程调用和参数"
cc = CLng("&H" + (Mid(code, 9, 4))) '出来的是十六进制数据 将接收到的数据送入hnr显示 clang将十六进制转换成十进制
Text4.Text = cc
Text6.Text = CLng("&H" + (Mid(code, 13, 4))) * 0.1
code = ""
bb = ""
code = ""
biaozhi = 0
End If
Else
If bb = Chr(6) Or bb = Chr(15) Then '检查开始标志位
code =&