2010-10-13 94 views
0

我正在使用C#SerialPort類寫入我的COM端口。奇怪的是,我可以從端口獲取數據 - 它發送我期待的數據。但是,我無法將任何數據發送到端口。我發送的任何數據都立即作爲來自端口的新數據回顯給我。我期待着一個「完成」的命令,但它將我剛剛發送的數據還給我。它從Windows HyperTerminal運行得很好,但是這個代碼不起作用。C#SerialPort WriteLine命令錯誤

我使用9600,8-N-1無流量控制。

我主要使用代碼這篇文章:

我實例化我的端口與此

comPort.BaudRate = int.Parse(_baudRate); //BaudRate 
comPort.DataBits = int.Parse(_dataBits); //DataBits 
comPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), _stopBits); //StopBits 
comPort.Parity = (Parity)Enum.Parse(typeof(Parity), _parity); //Parity 
comPort.PortName = _portName; //PortName 
comPort.Handshake = Handshake.None; 
comPort.ReadTimeout = 2000; 
comPort.RtsEnable = true; 
//now open the port 
comPort.Open(); 

和寫只是使用comport.write(串),我以前也用過COMPORT .writeline(字符串)具有相同的結果。

此代碼與普通香草超級終端之間的主要區別是什麼,會導致它們的行爲不同?

+0

對不起,意在包括鏈接到這篇文章,其中大部分來自:http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/ – 2010-10-13 22:20:00

回答

2

我偶然發現了許多代碼示例中沒有的答案。底線是你必須在每個端口寫入時包含一個回車符。我用的是:

comport.write(string) 

但它應該是

comport.write(string+"\r\n") 

你不會相信許多代碼示例如何沒能有一個代碼。我偶然發現了一個包含它的隨機片段,這是不同的。