我有一个串行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
这里也没有。 有什么建议吗?
答案 0 :(得分:0)
建议:
Regex.IsMatch(s,@'\b" + i.ToString() + @"\b")
看起来在将数据发送到串口之前调用ReadExisting,然后等待,然后进行测试。我怀疑你需要做什么(你应该澄清一下)是将数据发送到com端口,等待,然后读取响应。在这种情况下你想要:
Console.Writeline
你正在清除你的传出缓冲区而不是你的传入缓冲区,所以你很可能会从之前的通信中获得部分数据包。
不要以为你总是从1个响应中获得1个数据包...因此需要记录数据。