我准备用MSCOMM做一个串口通讯
发送数据:8F 5A 05 
接收数据:81 80 5A 05 0B 08 0D 2D 03 00 01 00 8F我现在在OnComm事件中写了这么一段接收的程序
Private Sub elMSComm_OnComm()
    Select Case elMSComm.CommEvent
        Case comEvReceive
          Buffer = elMSComm.Input
            For i = LBound(Buffer) To UBound(Buffer)
                    elReceive(i) = Buffer(i)
            Next i
               End If
            End If
    End Select但是这个elReceive只能收到8位数据,无法一次收到全部接收数据,请问有什么办法能够实现在上述接收中的elReceive能收到超过8位的数据

解决方案 »

  1.   

    你对elMSComm的input设置为多少,我觉得应该是
      len(81 80 5A 05 0B 08 0D 2D 03 00 01 00 8F) 当接收到这么多的字符的时候就触发一次 Case comEvReceive 这样才可以全部接收!
      

  2.   

    如果你的接收长度是固定的,那么可以通过设置缓冲区的大小来接收数据。设置缓冲区的大小可以通过MSComm的Rthreshold属性设置。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。MSComm1.Rthreshold=len(81 80 5A 05 0B 08 0D 2D 03 00 01 00 8F)
      

  3.   

    哦,我接收的长度不是固定的,接收长度在6到15之间的,如果把Rthreshold设置为一个常量的话,会出问题的,会得不到想要的数据
      

  4.   

    我在做串口通讯程序时遇到了这样一个问题:在VB中我需要将一个浮点型数据(single)转换成一个四位字节的字符串后,送给下位才能实现通讯.
    例如:需要将数据    1.11
            转换成    (3F 8E 14 7B) 字符串的形式发给下位
    另外,如何将下位传给我的字符串(3F 8E 14 7B)
            转换成浮点数 1.11
    请各位高手给看看,谢谢!
      

  5.   

    同意 zhzhq800204(lazio) 的说法,呵呵!!