vb 编写的串口软件 接收的数据不完整 中间会丢失几个数据

Private Sub MSComm1_OnComm()

Dim intInputLen As Integer
Dim n As Integer
Dim teststring As String

Select Case MSComm1.CommEvent
Case comEvReceive
If Option1.Value = True Then
MSComm1.InputMode = 1 '0:文本方式,1:二进制方式
Else
MSComm1.InputMode = 0 '0:文本方式,1:二进制方式
End If

intInputLen = MSComm1.InBufferCount
bytInput = MSComm1.Input

If Option1.Value = True Then
For n = 0 To intInputLen - 1
ReceiveData(rx) = bytInput(n)
rx = rx + 1
Text1.Text = Trim(Text1.Text) & " " & IIf(Len(Hex$(bytInput(n))) > 1, Hex$(bytInput(n)), "0" & Hex$(bytInput(n)))
Next n
Else
teststring = bytInput
Text1.Text = Text1.Text + teststring
End If
Timer_JCUart_Dtae.Enabled = True
End Select

End Sub

'端口初始化子程序'
Private Sub initial_com(com_num As Integer)
MSComm1.CommPort = com_num
MSComm1.OutBufferSize = 1024
MSComm1.InBufferSize = 1024
MSComm1.InputMode = 1
MSComm1.InputLen = 0
MSComm1.InBufferCount = 0
MSComm1.SThreshold = 1
MSComm1.RThreshold = 1
MSComm1.Settings = com_setting
MSComm1.PortOpen = True
End Sub

在接收事件中不应该操作界面元素显示数据;在接收事件中修改InputMode不好。

好的串口软件应该采用多线程,缓存和文件存储数据结果等,可以借鉴现有的串口助手。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-06
需要给你完成吗
第2个回答  2015-01-06
首先确认硬件有没有问题,数据线一定要质量好的
第3个回答  2015-01-06
应该是你 程序问题

就是接受数据的处理
相似回答