程序执行时,在读写串口或者打开串口的时候有时会出现软件停止不动,好像是死掉一样,过几十秒或者一两分钟后又可以往下执行了。这种情况有时候出现有时候没有,不知道这个是什么问题引起的假死?谢谢。

解决方案 »

  1.   

    在代码中加入这句:
    DoEvents
      

  2.   

    在编辑器里解释执行, 然后等到卡死的时候按下Ctrl+Break(右上角和Pause同一个键), 然后程序就会停在卡死的语句上了. 
    把停留出的这整段过程贴出来帮你看下.
      

  3.   


            If MSComm1.portopen = False Then
                    MSComm1.portopen = true
            End If
            
          
            ReDim unSend(6) As Byte
            Dim n As Integer
            
            unSend(0) = &H7B
            unSend(1) = 0
            unSend(2) = 5
            unSend(3) = Asc("R")
            unSend(4) = Asc("Z")
            
            Dim nTotal As Long
            nTotal = 0
            For n = 1 To 4
                    nTotal = nTotal + unSend(n)
            Next
            
            unSend(5) = nTotal And &HFF
            unSend(6) = &H7D
            
            MSComm1.InputMode = comInputModeBinary
            MSComm1.InBufferCount = 0
            MSComm1.Output = unSend
            Dim nNowTime As Long
            nNowTime = timeGetTime
            
            Do While timeGetTime - nNowTime < 100
                    
                    If MSComm1.InBufferCount >= 10 Then
                            Exit Do
                    End If
                    DoEvents
            Loop
            If MSComm1.InBufferCount = 0 Then
                    GoTo EndFunc
            End If
            
            unRecieve = MSComm1.Input  //有时候在这里死掉
      

  4.   

    MSComm1.portopen = true //有时候在这里死掉
      

  5.   

    那说明你这个问题是操作硬件时出现的死机。你使用的是不是USB转串口的转换器?
    建议换一个串口试一试。