我做了个软件,是和plc通讯,来控制机器工作的,我通过通讯实时采集一些量比如说流量采集回来,显示到屏幕上(text1控件中),但是每次得重新起一下才能采集过来,我看了源吗,还是没发现问题,那位大虾遇到过此类问题啊?
帮帮小弟啊!!下面是一部分源码:
 
  Select Case MSComm1.CommEvent    '有通讯事件产生
       Case comEvReceive         '??????????????????????????????
              '处理接收字符
              MSComm1.InputMode = comInputModeBinary   '设置返回数据的类型为二进制形式
              intInputLen = MSComm1.InBufferCount      '返回缓冲区中等待接受的数据
              bytInput = MSComm1.Input                 '返回为二进制形式              '把缓冲区内的数据存入数组y中
              ReDim y(LBound(bytInput) To UBound(bytInput))
              For i = LBound(bytInput) To UBound(bytInput)
                   y(i) = bytInput(i)
                   'Debug.Print i
                   number11 = y(i)
                   backnum = backnum & Trim(Str(number11)) & " "
                  
              Next i
              REVNUMSTR = Trim(backnum)               '获得完整的输入字符串,赋给revnumstr
               '处理输出字符串
                LenREVNSTR = Len(REVNUMSTR)
                   SPaceNum = 0
                   For rr = 1 To LenREVNSTR
                      CHAR = Mid(REVNUMSTR, rr, 1)    '一个一个取出已经处理好的缓冲区里的数据
                      If CHAR = " " Then
                          SPaceNum = SPaceNum + 1
                      End If
                   Next rr                stringstr1 = REVNUMSTR
                ReDim SAVENUM(SPaceNum) As Integer
                For s = 0 To SPaceNum
                    STRINGLEN = Len(stringstr1)
                    STRINGPOS = InStr(stringstr1, " ")
                    If STRINGPOS > 0 Then
                        stringstr2 = Left(stringstr1, STRINGPOS - 1)
                        stringstr1 = Right(stringstr1, STRINGLEN - STRINGPOS)
                        SAVENUM(s) = Val(Trim(stringstr2))
                    ElseIf STRINGPOS = 0 Then
                        SAVENUM(s) = Val(Trim(stringstr1))
                    End If
                    Debug.Print "s===" & s & "savenum(s)===" & SAVENUM(s)
                Next s
                '以下是几个位的信息
                YingYYeLiuLiang = SAVENUM(0)
                BaoJing = SAVENUM(1)
                DaMiShiJiLLiang = SAVENUM(2)
                JieShu = SAVENUM(3)  
                If JieShu = 255 Then
                
                    STATUSNUM = BaoJing
                    YingYYeLiuLiang = YingYYeLiuLiang * 2
'                    t = DMSJLLiang(YingYYeLiuLiang)
                    
                    '***********************************
                    '要接受数据的文本框,问题的出处    *
                    '                                  *
                    '***********************************
                    Text3.Text = Str(YingYYeLiuLiang)
                    Text4.Text = Str(DaMiShiJiLLiang)
                    
                    If STATUSNUM = 15 Then                '报警信息
                           Shape2.FillColor = vbRed
                    ElseIf STATUSNUM = 0 Then
                           Shape1.FillColor = vbGreen
                           Shape2.FillColor = vbGreen
                           
                    End If
                    
                Else
'                    MsgBox "发送数据错误,请您重新发送", vbOKOnly, "错误提示"
                    Exit Sub
                End If
       Case comEvSend
End Select
End Sub