Case 1 '全部发送
           a(4) = "03"
         
            For i = 0 To 74
              a(5) = CStr(i)
              a(6) = "00"
              a(7) = Val(MSHFlexGrid1.TextMatrix(i, 1)) Mod 256
              a(8) = Int(Val(MSHFlexGrid1.TextMatrix(i, 1)) / 256)
              a(15) = suma() 
              MSComm1.Output = a
            Next i  这些是发送的程序
接收的是:
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive     Timer_delay.Enabled = True '开始定时
  
 
End Select
End Sub
Private Sub Timer_delay_Timer()
   
Dim inbytes() As Byte
Dim b() As String
Dim adr As Integer
Dim data1 As Integer
Timer_delay.Enabled = False '注意要关闭定时器    inbytes = MSComm1.Input
    j = UBound(inbytes) - LBound(inbytes)
    If j < 0 Then Exit Sub
    
    str1 = ""
    For i = 0 To j
  
      str1 = str1 + IIf(inbytes(i) < 16, Trim("0") + Trim(Hex(inbytes(i))), Hex(inbytes(i)))
      str1 = str1 + " "
    Next i
     b = Split(str1, " ")
    lb = UBound(b)
    ReDim Preserve b(lb) As String
    If lb <> 16 Then
       MsgBox "信息出错"   '帧响应信息头  79 76
    ElseIf b(0) = "79" And b(1) = "76" And b(2) = "00" And b(3) = "00" Then
        If b(14) = "01" Then
             MsgBox "接收到读取的信息"哪位大侠帮我看看啊!我要实现74组数据的全部发送和读取 并接收到相应的响应数据 每帧16个数  怎么处理啊?总是出错 

解决方案 »

  1.   

    Case 1 '全部发送 
              a(4) = "03" 
            
                For i = 0 To 74 
                  a(5) = CStr(i) 
                  a(6) = "00" 
                  a(7) = Val(MSHFlexGrid1.TextMatrix(i, 1)) Mod 256 
                  a(8) = Int(Val(MSHFlexGrid1.TextMatrix(i, 1)) / 256) 
                  a(15) = suma() 
                  MSComm1.Output = a 
                  //进入等待应答函数,收到正确应答后继续发送,如超过等待时间可提供报错信息//
                Next i  这些是发送的程序