怎么会出现 无效的过程调用和参数 点击:1627 | 回复:3



大江大海

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:29帖 | 205回
  • 年度积分:0
  • 历史总积分:445
  • 注册:2005年10月23日
发表于: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 =&



大江大海

  • 精华:1帖
  • 求助:0帖
  • 帖子:29帖 | 205回
  • 年度积分:0
  • 历史总积分:445
  • 注册:2005年10月23日
发表于:2007-03-23 19:08:00
1楼
[color=#800000]Mid(code, 17, 2) = SumChk(Mid(code, 2, 15)) 就是这一步出了问题显示"无效的过程调用和参数"[/color]

大江大海

  • 精华:1帖
  • 求助:0帖
  • 帖子:29帖 | 205回
  • 年度积分:0
  • 历史总积分:445
  • 注册:2005年10月23日
发表于:2007-03-23 19:09:00
2楼
请各位大侠看看我的程序怎么回事

大江大海

  • 精华:1帖
  • 求助:0帖
  • 帖子:29帖 | 205回
  • 年度积分:0
  • 历史总积分:445
  • 注册:2005年10月23日
发表于:2007-03-23 19:21:00
3楼
我的程序和LG  iG5变频器通讯    USB---RS232---RS485---变频器

热门招聘
相关主题

官方公众号

智造工程师