请高手帮忙,关于MSCOMM控件接受二进制数据的问题(附原码)?
zpwly 2003-11-12 04:43:21 通过串口、RS232线,接受单片机发过来的二进制数!
一共两台单片机(A1、A2),发送数据的次序是这样的:
单片机先发送一个标志(是A1发的就发过来A1, 是A2发的就发过来A2)
我以十六进制的形式接受,并做好接受这个单片机数据的准备!
单片机再连续发5组数据,我接收到后以十进制在页面上显示出来!
最后发一个结束标志EE!
我这边接收到EE后不再接受单片机发过来的数据
这些数据发送间隔时很快的
现在的问题是我在接受单片机发过来的标志(A1或A2)时,连同他发过来的数据和结束标志EE一块接受了!
我的代码如下:
'设定 InputMode 读取二进制数据
MSComm1.InputMode = comInputModeBinary
'等待直到输入缓冲区有字节
'按16进制接收数据
Do Until MSComm1.InBufferCount < 10
DoEvents
Loop
'往缓冲区存二进制数据
Buffer = MSComm1.Input
'赋值于字节数组以便处理
Arr = Buffer
'按16进制接收数据
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
For i = 0 To UBound(Arr)
strTemp = strTemp & String(2 - Len(Hex(Arr(i))), "0") & Hex(Arr(i))
Next
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
问题就在这里:
这时的strTemp 中的数据是 ( A1或A2) + 5组数据 + EE
也就是把单片机所发的数据都接受到了!
请问,我该怎样才能做到先以十六进制接收到A1、A2,
在以十进制接受那5组数据!
谢谢了各位,分不够可以再加