vb的MSCOMM的丢失数据问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 22:19:00
最近在公司用VB做了一个一个测试电压的实时图形,代码拿不出来,说一下大意,就是用单片机读取一个电压值,经过运算发送到PC,然后用PICTURE1.LIN画出来,我是用S.....O发送数据的,也就是用S 跟O 包裹起来,取其中数据,我是这样处理的,一上来设置RThreshold为1,收到O以后,就设置RThreshold 为7,就是S 跟O 之间包了5个数据,数据处理的时候只取其中的5个数据,判断第一个跟第七个数据是不是S,O 只有是才把数据取出来然后画出来,现在的问题是画图、数据没问题,但是总是丢失数据,整的画图的时候一会快,一会慢的。高手来帮忙啊 ,怎么能让数据不丢失,或者丢失的少一点,或者更好的办法。谢谢啦
看了你的代码,感觉也可以 ,我的oncomm里边的语句太多了,用你的会省不少,我用调试助手调试基本没看到丢失数据的情况,可是用我的就老是丢失数据,用什么好的方法,会减少数据丢失呢,数据u丢失是不是因为我的oncomm里边语句太多了?我还要在里边画实时图形的,劳烦再给解释一下,谢谢。

直接设置RThreshold为1,由接收代码判断处理数据.
Option Explicit
Dim strRec As String
Private Sub Form_Load()
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
strRec = strRec & MSComm1.Input
Text1 = strRec
If Mid(strRec, 1, 1) = "S" And Mid(strRec, 7, 1) = "O" Then
'数据处理
Text2 = strRec
strRec = ""
End If
End Select
End Sub

补充:把画图形代码从OnComm拿出,单独放过程执行.