串口,DOEVENTS等待回应,关闭系统时出错
下面一段串口程序,用MSComm发送出命令后,通过DOEVENTS等待返回消息,但是如果这个返回消息没有的话,就一直在等待,到系统关闭时也是没返回消息的时候,就会报错,请问怎么在系统关闭的时候,关闭这个doevents让它不报错呢.
MSComm1.Output = "#01" & Chr$(13)
' Wait for data to come back to the serial port.
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, vbCr)
[解决办法]
设置一个超时,简单的如
Dim sngTimeOut As Single
' Wait for data to come back to the serial port.
sngTimeOut = Timer + 0.5
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
If Timer > sngTimeOut Then Exit Do
Loop Until InStr(Buffer$, vbCr)
注意,上面的超时不支持跨午夜。
[解决办法]
可以用定时器,或者把这个等待操作放到一个thread中,结束的时候,ExitThread退出线程,然后退出主进程
[解决办法]