-1
這是我遇到問題的代碼。SerialPort.Read()always TimeoutException
在我的形式加載,我得到這個:
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
現在這裏的問題是,當我點擊按鈕1,我遇到port.Read(inStream, 0, 80)
時發生TimeoutException。
看起來像一個基本的因果關係違規。你通常*首先*寫一些東西,然後*讀取回應。點擊該按鈕不會強制設備發送任何內容。切勿忽略Read()的返回值。不設置握手屬性是另一個非常基本的原因,您爲什麼不從設備獲取任何回報。 – 2014-09-11 23:27:47