注册 登录
编程论坛 VB6论坛

请大神帮我看一下

lbc0405 发布于 2019-09-24 15:44, 1195 次点击
buffer$ = ""
MSComm1.Output = "@00FA0000000000101300C2C000001" + FCS("@00FA0000000000101300C2C000001") + "*" + Chr$(13) '读
Do
 DoEvents
 buffer$ = buffer$ & MSComm1.Input
Loop Until InStr(buffer$, "*")
   
If CInt(Mid(buffer$, 25, 1)) = 1 Then
 Command2.Enabled = True
Else
 Command2.Enabled = False
End If
在我的程序里插入这么一段程序,插入之后这段程序后面的所有命令都不能执行了。把这段程序改为注释,后面的命令可以执行
1 回复
#2
风吹过b2019-09-24 16:12
Do
 DoEvents
 buffer$ = buffer$ & MSComm1.Input
Loop Until InStr(buffer$, "*")

应该是卡在这里了。
这个循环里,应该加一个超时退出循环的处理过程。
Dim t1 As sing, t2 As sing
t1 = Timer               '进入循环前的秒数
Do
    t2 = Timer          '当前秒数
    If t1 > t2 Then t1 = t1 - 86400         '如果T2小于T1,说明过天了,修正T1,修正后T1为负数,而T2这时为个位数
    DoEvents
    buffer$ = buffer$ & MSComm1.Input
    If t2 - t1 > 3 Then Exit Do             '3秒超时,这个时间自己定
Loop Until InStr(buffer$, "*")

1