2013-10-26 84 views
0

我有關於數據從通過串行端口從一個Arduino接收澄清問題。具體來說,我使用的是Sparkfun Pro Micro 5v/16MHz,並試圖在C++中編寫一個簡單的GUI來通過串口發送消息,然後接收Arduino板上運行的代碼中指定的幾個響應之一。串行用C++通信(Visual Studio 2010中,.NET 4.5)

我知道Arduino的運行通信和代碼的工作,因爲我已經使用Arduino的IDE的串口監控工具嘗試和我能夠發送和接收適當的響應。

當通過C發送消息++圖形用戶界面我創建我看到交通指示燈閃爍上發送消息導致我相信,通過C++圖形用戶界面發送工作,但沒有任何關於接收郵件的作品。

我的一些代碼:

private: System::Void serialPort1_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e) 
     { 
      String^ testStr = serialPort1->ReadExisting(); 
      log_textBox->Text += testStr + "\n"; 
     } 

這是分配給DataReceived事件我SerialPort對象是我的表單的一部分很簡單的事件處理程序。我在它裏面設置了一個斷點,它永遠不會被觸發。我有點不知所措,我在Arduino或硬件方面做了大量工作,所以我不完全確定我的選擇是用於調試。

如果任何人有任何調試建議或想法是什麼,我做錯了我會非常感激。此外,如果我沒有提供任何信息,請告訴我需要什麼,我將編輯它!

謝謝你, -K

+1

我猜你有硬件流量控制設置,但只有TX/RX線路連接。嘗試在設置串口時關閉硬件流量控制。 – rm5248

+0

@ rm5248感謝您的建議!我將如何做到這一點?我通過USB端口連接,並沒有在VS中的串行端口對象上看到該選項。 –

+0

我不知道如何在C++/NET做到這一點,但試試這個:http://msdn.microsoft.com/en-us/library/system.io.ports.handshake.aspx – rm5248

回答

0

找到一個不起眼的評論談論設置後,終於想通了這一點。

事實證明,我所需要的串行端口的DTREnabled屬性被設置爲True,而不是虛假的,以使DataReceived處理火災。此設置從未在有關串行端口通信的任何MSDN文檔中設置。如果您正在閱讀並且遇到類似問題,請確保DTREnabled,RTSEnabled都設置爲true,甚至可以將握手設置爲RequestToSend。也許其中的一個或全部將是修復它的結果。

在我的情況下,只有DTREnabled需要爲true。我不太明白這些設置的作用,但是你有它。