串口接收时,split出错
本帖最后由 jiehao 于 2011-02-12 21:42:54 编辑 背景:现在用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