如何根据串口现有数据在框中显示文本

时间:2016-08-19 14:42:22

标签: vb.net user-interface serial-port serial-communication

我有一个串行com GUI,我需要在基于的框中显示串口的现有数据,但不是完全串口是什么数据是。例如,如果串口的现有行是“!+ 0007。”,我希望我的文本框读为“类型K”。我尝试过多种方法,比如If-Then和Select Case,但我没有运气。

when

没有运气

    Private Sub GetInput_Click(sender As Object, e As EventArgs) Handles GetInput.Click
    SerialPort1.Write("$" & ComboBox4.Text & ComboBox5.Text & "06" & vbCr)
    System.Threading.Thread.Sleep(50)
    If SerialPort1.ReadExisting = "!+0007." Then
        GetInputBox.Text = "Type K"
    End If

    SerialPort1.DiscardOutBuffer()
End Sub

这里也没有。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

建议:

  1. 首先记录使用Regex.IsMatch(s,@'\b" + i.ToString() + @"\b")
  2. 发送和接收的数据
  3. 看起来在将数据发送到串口之前调用ReadExisting,然后等待,然后进行测试。我怀疑你需要做什么(你应该澄清一下)是将数据发送到com端口,等待,然后读取响应。在这种情况下你想要:

    Console.Writeline
  4. 你正在清除你的传出缓冲区而不是你的传入缓冲区,所以你很可能会从之前的通信中获得部分数据包。

  5. 不要以为你总是从1个响应中获得1个数据包...因此需要记录数据。