SerialPort.Read()始终是TimeoutException

时间:2014-09-11 04:56:44

标签: vb.net serial-port

这是我遇到问题的代码。

在我的表单加载中,我得到了这个:

Dim port as new Ports.SerialPort("MyPort", 100000)
port.DataBits = 8
port.StopBits = Ports.StopBits.One
port.Parity = Ports.Parity.None
port.Open()
System.Threading.Thread.Sleep(200)

然后在我的button1.Click事件中,我得到了这个:

Try
        If port.IsOpen Then
            Dim inStream(80) As Byte
            port.Read(inStream, 0, 80)
            Dim returndata As String = System.Text.Encoding.ASCII.GetString(inStream, 0, 80)
            returndata = returndata.Replace(Chr(2), "A")
            returndata = returndata.Replace(Chr(3), "B")
            msg("Data from Server : " + returndata)
            Dim data As String
            data = Write(TextBox2.Text, TextBox2.Text.Substring(0, 4))
            Dim outStream As Byte() = _
            System.Text.Encoding.ASCII.GetBytes(STX & data & ETX)          '("Message from Client$")
            ashsp.Write(outStream, 0, outStream.Length)

        End If
Catch ex As Exception
End try

现在的问题是,当我点击button1时,遇到port.Read(inStream, 0, 80)时出现TimeoutException。

1 个答案:

答案 0 :(得分:0)

您确定要读取的确切字节为80个字节吗?您可以使用BytesToRead属性动态检查可用的字节数。或者,如果您只接收串行端口上的文本,则可以使用ReadExisting()方法将所有可用字节放入字符串对象中。