循环开始时,串行通信停止工作

时间:2019-05-16 02:50:07

标签: vb.net

如果我开始一个循环,这不是从秤上更新数据,则串行数据通信有问题。我不知道如何继续通信以及运行循环。代码的逻辑将在循环中,因此我可以检查整数中的值并将其与串行数据(电子秤)中的数据进行比较

Private Sub conWeight_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles conWeight.DataReceived

receivedText(conWeight.ReadExisting())

End Sub


Private Sub receivedText(ByVal [text] As String)
    If Me.lblWeight.InvokeRequired Then
        Dim x As New SetTextCallback(AddressOf receivedText)
        Me.Invoke(x, New Object() {(text)})
    Else
        Dim reverseString As String = [text]
        Dim revString As String = StrReverse(reverseString)
        Dim clean As String
        clean = revString.Replace("=", "")
        Me.lblWeight.Text = clean 'append text
    End If
End Sub

'this is part with loop

 If binWeight = 0 Then
            targetweight = CInt(txtbSilo1.Text) + CInt(txtbSilo2.Text) + CInt(txtbSilo3.Text) + CInt(txtbSilo4.Text)
            If CInt(txtbSilo1.Text) > 0 Then
                currentWeight = CInt(txtbSilo1.Text)
                frmAutomaticControl.conControl.Open()
                frmAutomaticControl.conControl.Write("motr1")
                frmAutomaticControl.conControl.Close()
                MsgBox("check")
                Do
                    If binWeight >= currentWeight Then
                        frmAutomaticControl.conControl.Open()
                        frmAutomaticControl.conControl.Write("moto1")
                        frmAutomaticControl.conControl.Close()
                        Exit Do
                    End If

                Loop
            Else

            End If
            BunifuFlatButton1.Enabled = True
        Else
            MsgBox("Empty The Bin")
        End If

2 个答案:

答案 0 :(得分:0)

只有两个主意。 1.将代码的这一部分丢给后台工作人员。 2.整理并放入application.doevents。 3.创建一个全局变量,该变量将捕获循环的每次迭代的输出,然后将其提供给需要的地方。

答案 1 :(得分:0)

仅需一行代码。在您的循环中,将此放在所有其他内容之上。

Application.DoEvents()