我是vb中菜鸟  ,求指点
Option ExplicitPrivate Sub cmdsend_Click()
Dim i, FsArr() As Byte
    ReDim FsArr(7)
    For i = 0 To 7
        FsArr(i) = Val("&H" + Text发送(i))
    Next i
   
 MSComm1.Output = FsArr  '发送字节数组
End SubPrivate Sub Cmdclear_Click()
Dim i
    For i = 0 To 7
        Text接收(i) = ""
    Next i
End Sub Private Sub Form_Load()
    MSComm1.CommPort = 6  'COM端口
  
    MSComm1.InputMode = comInputModeBinary    '采用二进制传输
   
 
   MSComm1.PortOpen = True '打开端口
  
End Sub
Private Sub MSComm1_OnComm()
Dim i, JsArr
    If MSComm1.InBufferCount > 0 Then
        JsArr = MSComm1.Input   '从接收缓冲区取二进制数据
        For i = 0 To UBound(JsArr)      '显示8个接收数据
            Text接收(i) = Hex(JsArr(i))
        Next i
        
    End If
End Sub
     逐语句调试时正确的,但是运行时就只能接受到fsarr数组的后四位,求大侠几点

解决方案 »

  1.   


    Option Explicit
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Sub cmdsend_Click()
    Dim i, FsArr() As Byte
      ReDim FsArr(7)
      For i = 0 To 7
      FsArr(i) = Val("&H" + Text发送(i))
      Next i
        
     MSComm1.Output = FsArr '发送字节数组
    End SubPrivate Sub Cmdclear_Click()
    Dim i
      For i = 0 To 7
      Text接收(i) = ""
      Next i
    End Sub Private Sub Form_Load()
      MSComm1.CommPort = 6 'COM端口
       
      MSComm1.InputMode = comInputModeBinary '采用二进制传输
        
     
      MSComm1.PortOpen = True '打开端口
       
    End Sub
    Private Sub MSComm1_OnComm()
    Dim i, JsArr
      If MSComm1.InBufferCount > 0 Then
      Sleep 30
      JsArr = MSComm1.Input '从接收缓冲区取二进制数据
      For i = 0 To UBound(JsArr) '显示8个接收数据
      Text接收(i) = Hex(JsArr(i))
      Next i
        
      End If
    End Sub
      

  2.   

      JsArr = MSComm1.Input '从接收缓冲区取二进制数据
    '--你的问题很可能是这里和后面接的太紧密了,你在这里设置一个循环试试看 for i=0 to 1000
      dovents
    next i  For i = 0 To UBound(JsArr) '显示8个接收数据
      Text接收(i) = Hex(JsArr(i))
      Next i
      

  3.   

    问题很简单,就是下位机返回数据需要时间,所以你在Output和Input之间延迟片刻即可。
      

  4.   

    谢谢各位,已解决!特别谢谢3楼!不过对于4楼的dovents函数不能直接引用,需要自己编写吗?我是vb新手,不过我大致动的了原理,谢谢!
      

  5.   

    哈哈,dovents....雅琪MM是手误了,应该为doevents.