这是我遇到问题的代码。
在我的表单加载中,我得到了这个:
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。
答案 0 :(得分:0)
您确定要读取的确切字节为80个字节吗?您可以使用BytesToRead属性动态检查可用的字节数。或者,如果您只接收串行端口上的文本,则可以使用ReadExisting()方法将所有可用字节放入字符串对象中。