串口接收时,split出错
背景:现在用VB做一个单片机与PC端的串口通信程序。该程序主要是发送命令,然后在串口的接收区完成特定的一些显示,程序采样MSCOMM控件,采样事件驱动方式(来一字符就产生On_Comm事件)。由于每个命令发送后要求在接收区显示的格式和内容不一样,因此在MSComm1_OnComm()函数中用一个标志位来分开显示不同的内容。
问题:现在的问题是在On_Comm函数中接收时不能正确地分割数据。具体代码如下:
receive_cnt = Form1.MSComm1.InBufferCount Buffer = Form1.MSComm1.Input Arr = Buffer s = "" For i = 0 To receive_cnt - 1 'receive_cnt is static s = s & Chr$(Arr(i)) intRecCnt = intRecCn Next i If bytReceiveType = 1 Then '对应一项命令 strHLARec = Split(s, "%") If InStr(s, "End") > 0 Then '检测到结束符中跳出函数 blnReceiveFlag = False Exit Sub End If For i = 0 To UBound(strHLARec) Text1.Text = Text1.Text & strHLARec(i) & Chr$(10) & Chr$(13) Next i Text1.Text = Text1.Text & Chr(10) ElseIf bytReceiveType = 3 Then '对应另一项命令 strSysPara = Split(s, "%") If InStr(s, "END") > 0 Then '这个结束符和上一个不太一致,这是下位机造成的 blnReceiveFlag = False Exit Sub End If For i = 0 To UBound(strSysPara) Text1.Text = Text1.Text & strSysPara(i) & Chr$(10) & Chr$(13) Next i