主题:vb串口通讯数据多出错?
程序如下:
Private Sub Form_Load()
MSComm1.CommPort = 4 '设置通信端口号为COM4
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.Settings = "9600,n,8,1" '设置串口参数
MSComm1.InputMode = 0 '接收文本型数据
MSComm1.RThreshold = 1 '接收缓冲区每收到一个字符都会使 MSComm 控件触发OnComm 事件
MSComm1.InputLen = 0
MSComm1.InBufferSize = 5120
MSComm1.OutBufferSize = 512
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive ' 收到 RThreshold # of
Dim buffer As String
buffer = MSComm1.Input
numR = numR + 1
RXT.Text = numR ' numR用于计数接收到的字节数,并在text显示
End Select
receivedata.Text = receivedata.Text + buffer
End Sub
问题是:用串口调试助手接收数据无论发送的是多少个都是正确的,计数也对,但是用自己编的vb上位机,在达到1000多个数据时会发生数据的丢失,比如发送5位数00009,接收到的会是0009,计数少了一位,显示出来接收的数也是少了一位,因此导致结果不正确,不知道是什么原因?按理说应该是自己编的软件的问题,可是找了很多资料,均未找到结果,程序就是上面那样的,我就更迷惑了?
Private Sub Form_Load()
MSComm1.CommPort = 4 '设置通信端口号为COM4
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.Settings = "9600,n,8,1" '设置串口参数
MSComm1.InputMode = 0 '接收文本型数据
MSComm1.RThreshold = 1 '接收缓冲区每收到一个字符都会使 MSComm 控件触发OnComm 事件
MSComm1.InputLen = 0
MSComm1.InBufferSize = 5120
MSComm1.OutBufferSize = 512
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive ' 收到 RThreshold # of
Dim buffer As String
buffer = MSComm1.Input
numR = numR + 1
RXT.Text = numR ' numR用于计数接收到的字节数,并在text显示
End Select
receivedata.Text = receivedata.Text + buffer
End Sub
问题是:用串口调试助手接收数据无论发送的是多少个都是正确的,计数也对,但是用自己编的vb上位机,在达到1000多个数据时会发生数据的丢失,比如发送5位数00009,接收到的会是0009,计数少了一位,显示出来接收的数也是少了一位,因此导致结果不正确,不知道是什么原因?按理说应该是自己编的软件的问题,可是找了很多资料,均未找到结果,程序就是上面那样的,我就更迷惑了?