2014-01-14 48 views
0

我需要通過串口連接到傳感器,並從中讀取一些數據。我連接到它併發送命令,但設備沒有返回任何內容,而是拋出了超時異常。這裏的stackoverflow類似的問題使用OnDataReceived事件,我試過了,它沒有工作。我用來初始化的參數以及我發送的命令在膩子上按預期工作。通過串口連接到設備併發送命令,但沒有返回

- 我失去了什麼這裏

void Read() 
{ 
     SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); 

     try 
     { 
      serialPort.Handshake = Handshake.XOnXOff; 
      serialPort.Encoding = new ASCIIEncoding(); 
      serialPort.ReadTimeout = 1000; 
      serialPort.WriteTimeout = 900; 
      serialPort.Open(); 


      serialPort.WriteLine("TEMP"); 
      MessageBox.Show("Reading"); 
      MessageBox.Show(serialPort.ReadLine()); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
      serialPort.Close(); 
     } 
} 

謝謝

+0

它是否可以通過命令行(或正確的終端應用程序)使用'echo test> com1:'工作? Moveover(但在你的例子中,這可能只是一個問題),你確定你的設備將按照'ReadLine'的預期回覆UNICODE文本嗎? –

+0

您確定設備正在響應嗎?您是否使用[終端](http://realterm.sourceforge.net/)確認了這一點? – Groo

+0

是的,我通過Putty.exe測試了設備,我剛剛嘗試過echo test> com1,它什麼都沒有返回 – Yohannes

回答

1

我建議問題出在你正在使用的編碼上。要檢查這是否是問題,請使用您選擇的嗅探器來查看應用程序上傳輸的字節與putty上的字節相同。

只有確定在使用嗅探器時你確實試圖讀取字節,因爲如果你不這樣做,它們將不會顯示在輸出中。

如果沒有顯示任何內容,您可以嘗試將ReadLine()方法更改爲ReadByte()以確保您正在使用的閱讀類型沒有問題。

串行端口嗅探器

  • http://www.serialmon.com/
  • virtual-serial-port.org/products/serialmonitor/?gclid=CInI2ZPL_bsCFaxr7Aod8S4A8w
  • www.hhdsoftware.com/device-monitoring-studio
+0

對不起,最後兩個鏈接不完整,但我沒有足夠的聲望發佈多個鏈接 – Fernando

+0

這是一個編碼問題。謝謝。我以爲我把它標記爲幾年前的答案。 – Yohannes

2
serialPort.Handshake = Handshake.XOnXOff; 

也許這是正確的,這是非常不尋常。但真正的設備幾乎總是注意硬件握手信號,在增加到Xon/Xoff流量控制協議。在設備確信它連接到真實計算機之前,必須打開DTR(數據終端就緒)和RTS(準備發送)信號。像膩子這樣的程序會一直打開它,你的程序不會。

添加這兩種需要的行:

serialPort.RtsEnable = true; 
    serialPort.DtrEnable = true; 

並確保serialPort.NewLine屬性由裝置使用的消息結束字符正確地匹配。暫時使用ReadExisting()來避免被這些細節咬傷,不要這樣。

+0

許多簡單的設備只使用兩條線進行串行通信。我不會說沒有硬件握手是非常不尋常的(即使支持它,它通常也是可配置的)。 – Groo

+0

許多優秀的設備,尤其是實驗室或工業應用中使用的那種設備*都使用握手。當然奧卡姆剃刀總是適用於這裏,如果OP將使用「簡單」設備,那麼他不會問這個問題。 –

+0

我同意他們中的很多人都使用握手方式,但是我爲一堆測量設備編寫了解析器。有人可能會說奧卡姆的剃刀會說「如果你不需要使用2根以上的導線」。 :)但答案是有用的,就像你的答案通常是,這只是我的看法。 – Groo

相關問題