有个问题一直困惑我,请高手指教。Rthreshold设置为1,接收缓冲区有字符就会出发OnComm事件读取缓冲区的字符。
我用一个串口调试程序发送一个字符串'123456'到串口,那么VC编的这个程序是怎么读缓冲区的字符串的?是一位一位的读,还是一起读?
是不是涉及到Mscomm事件响应的速度和串口调试程序发送字符串的速度比较?如果发送字符串速度比较慢,Mscomm事件就一位一位的处理,如果发送字符串的速度比Mscomm事件响应的速度快,就一起处理,是么?如果要发送的数据特别长,Mscomm事件处理的方式,是不是应该一部分一部分的进行?谢谢
我用一个串口调试程序发送一个字符串'123456'到串口,那么VC编的这个程序是怎么读缓冲区的字符串的?是一位一位的读,还是一起读?
是不是涉及到Mscomm事件响应的速度和串口调试程序发送字符串的速度比较?如果发送字符串速度比较慢,Mscomm事件就一位一位的处理,如果发送字符串的速度比Mscomm事件响应的速度快,就一起处理,是么?如果要发送的数据特别长,Mscomm事件处理的方式,是不是应该一部分一部分的进行?谢谢
Private Sub MSComm_OnComm()
Dim S() As Byte
Dim SS(1024) As Byte
Static N As Long
Static T As Variant If (MSComm.CommEvent = comEvReceive) Then
S = MSComm.Input '只要有数据就收进来,哪怕只是一个
If (Timer - T > 0.01) Then '间隔10MS以上就认为是一个新的包
text1="" 'text1用于搜集和显示接收(HEX格式)
N = 0
End If
T = Timer
For i = 0 To UBound(S) '一个数据包可能产生若干个oncomm事件
Text1.Text = Text1.Text & Right("0" & Hex(S(i)) & "H", 3) + " "
SS(N+i)=S(i) '接收数据包缓存于SS()
N=N+UBound(S)
Next i
End If
End Sub
www.gjwtech.com