jr.perezreinhart Ответов: 1

Почему моя последовательная связь перестает работать при запуске цикла?


У меня есть проблема с последовательной передачей данных, если я запустил цикл, он не обновляет данные с моих весов. Я не могу понять, как продолжить общение, а также запустить цикл. Логика моего кода будет находиться в цикле, чтобы я мог проверить значение из моего целого числа и сравнить его с данными из последовательных данных (Весы)

Это код, в котором я получаю данные
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

Это функция с циклом
Function batching() As String
        BunifuFlatButton1.Enabled = False
        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

        Return 0
    End Function



Что я уже пробовал:

Я уже изменил его на do while или другой цикл.

1 Ответов

Рейтинг:
0

OriginalGriff

Без вашего устройства и данных мы не можем сказать.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы не знаете, как им пользоваться, то Google должен предоставить вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!