Как я могу проверить полученную строку для конкретного слова? - PullRequest
0 голосов
/ 19 сентября 2019

Я отправляю строку "end" из моего arduino uno в приложение vb.net.Я хочу, чтобы приложение vb.net распознало слово и провело определенное действие.Я вижу, что слово принимается в консоли, но, похоже, оно не распознается кодом.

Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    Console.WriteLine(SerialPort1.ReadExisting)
    If SerialPort1.ReadExisting IsNot "end" Then
        dataRxd = dataRxd & SerialPort1.ReadExisting
    Else
        txtRx.Text &= dataRxd
        Console.WriteLine("###############")
        Console.WriteLine(dataRxd)

        'Dim result As newData = JsonConvert.DeserializeObject(Of newData)(dataRxd)
        'Dim com As result.com

        'SerialPort1.Close()
        'MySqlConn = New MySqlConnection
        'MySqlConn.ConnectionString = "server=localhost;userid=root;password=g4rg45m3ll1;database=tags"
        'Try
        '    Dim SDA As New MySqlDataAdapter
        '    Dim dbDataSet As New DataTable
        '    Dim bSource As New BindingSource
        '    MySqlConn.Open()
        '    'Query = "update tags.tags_read set LastRead= now() where TagID='" & dataRxd & "';"
        '    Query = "insert into tags.tags_read values ('" & dataRxd & "', now());"
        '    cmd = New MySqlCommand(Query, MySqlConn)
        '    reader = cmd.ExecuteReader
        'Catch ex As MySqlException
        '    MessageBox.Show(ex.Message)
        'End Try
        'MySqlConn.Dispose()
        'MySqlConn.Close()
        'SerialPort1.Open()
    End If
End Sub

Вот пример полученных данных для приложения vb.net,показывает, что слово принимается:

0001220000570221001B end 0001220000570221001B end Поток 0x4a70 завершился с кодом 0 (0x0).

1 Ответ

1 голос
/ 19 сентября 2019

ReadExisting это метод, а не свойство.Если вы вызываете его один раз, значит, вы читаете существующие данные, поэтому данных больше нет.Вы не можете позвонить снова и получить те же данные.Если вы планируете использовать данные, которые вы прочитали более одного раза, тогда делайте так, как должно быть всегда: присвойте результат метода переменной, а затем используйте эту переменную как требуется.

Dim msg = SerialPort1.ReadExisting()

Console.WriteLine(msg)
If msg <> "end" Then
    dataRxd = dataRxd & msg

Обратите внимание, что я такжеиспользуется <> вместо IsNot, потому что это действительно ценностное равенство, а не эталонное равенство, которое вас волнует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...