求助VB问题,做老师的上位机监控
这是串口通信中的一段
If MSComm1.CommEvent = comEvReceive Then '接收事件- -- - -- --
        'Sleep (80) '可能的最大的长度是64+6=70,波特率为9600 延时至少 需要59ms
        MSComm1.InputLen = 4  '一次从input读取4个字节数据
        If MSComm1.InBufferCount >= 4 Then   '如果当前缓冲区数据超过4个字节
            ReDim bytInput2(0 To 3) As Byte
            bytInput2 = MSComm1.Input  '读数据
            'ReDim Preserve bytInput2(0 To 4) As Byte  '扩容
            If bytInput2(0) = &HAA And bytInput2(1) = &H10 Then       '判断块头  aa 十进制为170  且次数据为  读的意思
            'If bytInput2(0) = 97 Then          '判断块头  小写a
                DataValid = True
                DataLen = bytInput2(3)    '数据长度??????????????????????????
DataLen怎么能这样赋值  那不直接等于1了么? 

解决方案 »

  1.   

    DataLen = bytInput2(3) '数据长度
    bytInput2的第4个字节表示长度,怎么一定是1??
      

  2.   

    If bytInput2(0) = &HAA And bytInput2(1) = &H10 Then '判断块头 aa 十进制为170 且次数据为 读的意思
      'If bytInput2(0) = 97 Then '判断块头 小写a
      DataValid = True
      DataLen = bytInput2(3) '数据长度??????????????????????????
    从这里看可能第一字节为帧头0xaa,第二字节为“R/W”,第四字节为数据长度。你在问问清楚。
      

  3.   

    http://download.csdn.net/detail/veron_04/3601715
      

  4.   

    这是一段不定长通讯协议获取包头的部分。包头长度 4 字节。包头标志是 0xAA,第四字节是长度。纳闷 3 楼如何看出第二字节是 R/W?
      

  5.   

    我也没看出来,为什么楼主觉得这样赋值就一定是1呢?
    前面不是通过
    bytInput2 = MSComm1.Input
    给bytInput2(3)赋过值了吗