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分钟的时候数据就开始出错了。
我实在是不知道啥原因啊。请大家帮我看看吧。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货