Dim Datacomy_txt1(500000) As Single   '第一路数据存放数组
Dim Datacomy_txt2(500000) As Single   '第二路数据存放数组
Dim Timex_txt(500000) As Single       ’时间
     
Private Sub Form_Load()
   frequency = 120
   timenumber = 1
   TimeCount = 99990
   Timer1.Enabled = False
  
   MSComm1.CommPort = 1
   MSComm1.Settings = "115200,N,8,1"
   MSComm1.InputLen = 8 '接收缓冲区的大小
   MSComm1.RThreshold = 0 
   MSComm1.InputMode = comInputModeBinary                '接收二进制型数据
    If MSComm1.PortOpen = False Then
    MSComm1.PortOpen = True
    End If
    MSComm1.InBufferCount = 0
    Timer1.Enabled = True
    Timer1.Interval = 250
End SubPrivate Sub Timer1_Timer()
Dim temp_byte1() As Byte   ’第一路数据
Dim temp_byte2() As Byte   ’第二路数据
Dim i As Integer
Dim t1 As Integer
Dim t2 As Integer
Dim flag As Boolean        Static tmp_byte As String
        flag = True
        
        If MSComm1.PortOpen = True Then tmp_byte = tmp_byte & MSComm1.Input
         
        If LenB(tmp_byte) < 16 Then Exit Sub
        For i = 0 To LenB(tmp_byte) - 16
            If AscB(MidB(tmp_byte, i + 1, 1)) = &HAA And AscB(MidB(tmp_byte, i + 8, 1)) = &HBB And AscB(MidB(tmp_byte, i + 9, 1)) = &HAA And AscB(MidB(tmp_byte, i + 16, 1)) = &HBB Then
                temp_byte1 = MidB(tmp_byte, i + 1, 8)
                temp_byte2 = MidB(tmp_byte, i + 9, 8)
                tmp_byte = RightB(tmp_byte, LenB(tmp_byte) - i - 16)
                flag = False
            End If
        Next i
        '没有合适数据,退出
       If flag Then Exit Sub
       If TimeCount > timenumber Then         '采集
       If temp_byte1(0) = &HAA And temp_byte1(7) = &HBB And temp_byte2(0) = &HAA And temp_byte2(7) = &HBB Then
              If temp_byte1(1) = 1 And temp_byte2(1) = 2 Then
               buffer3 = temp_byte1(2) & temp_byte1(3) & temp_byte1(4) & "." & temp_byte1(5)
               buffer4 = temp_byte2(2) & temp_byte2(3) & temp_byte2(4) & "." & temp_byte2(5)
               Datacomy_txt1(timenumber) = CSng(buffer3)
               Datacomy_txt2(timenumber) = CSng(buffer4)
               Else
               If temp_byte1(1) = 2 And temp_byte2(1) = 1 Then
               buffer3 = temp_byte2(2) & temp_byte2(3) & temp_byte2(4) & "." & temp_byte2(5)
               buffer4 = temp_byte1(2) & temp_byte1(3) & temp_byte1(4) & "." & temp_byte1(5)
               Datacomy_txt1(timenumber) = CSng(buffer3)
               Datacomy_txt2(timenumber) = CSng(buffer4)
              End If
          End If
        End If
        End If
    Timex_txt(timenumber) = timenumber / frequency
    timenumber = timenumber + 1
    End Sub请高手帮我看看我的程序,我照大家的意思改了好多遍,怎么都不对。
我用的是两台电脑测试,将两台机器的串口连接,另一台用串口助手定时发送固定的数据。
前两分钟数据都是对的,到了2.3分钟的时候数据就开始出错了。
我实在是不知道啥原因啊。请大家帮我看看吧。