使用VB.net中的“IF”语句检查串口接收的数据

时间:2015-12-26 15:00:21

标签: vb.net vbscript

  

我能够从串口接收数据,但我想检查一下   收到数据。

以下是代码:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
   If int = 0 Then
     If SerialPort1.ReadExisting() = "a" Then
       'Do Something i want
     End If
   End If
  

所以,我使用“ReadExisting()”功能来接收数据。它允许我   接收数据,但不要让我检查收到的数据。

     

“我想检查收到的数据,如果收到的数据是相同的   因为'人物 - 一个'然后必须完成我想要的任务。“

     

感谢高级。 :)

1 个答案:

答案 0 :(得分:0)

如果你真的必须通过轮询接收缓冲区来实现它,这里是我建议的代码来解决你的问题:

 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
     If SerialPort1.BytesToRead > 0 Then
        'once anything have been received and stored in inner buffer.
         If SerialPort1.ReadChar() = "a" Then
               'Do Something you want
         End If
     End If
   End Sub

概念是,检查接收缓冲区中是否存在任何内容,如果是,则读取一个char。如果out char有效,请执行自己的操作。

顺便说一句,使用 ByteToRead 进行预检查可以防止在调用 ReadChar 时阻止您的计时器,如果没有在串行端口上收到任何内容。