2016-01-21 98 views
0

我只是試圖獲得串行通信的基礎知識開始;我試圖用我發現的這個例子,據我所知,它應該工作。我只想把我輸入的串口監視器輸出回來,這樣我就可以看到它是如何工作的。如果串行監視器不觸發該情況,我也嘗試刪除while serial.available。 這裏是我的代碼:基本的Arduino串行通信

// Buffer to store incoming commands from serial port 
String inData; 

void setup() { 
Serial.begin(9600); 
Serial.println("Initialized\n"); 
} 

    void loop() { 
    while (Serial.available() > 0) 
{ 
    char recieved = Serial.read(); 
    inData += recieved; 

    // Process message when new line character is recieved 
    if (recieved == '\n') 
    { 
     Serial.println("Arduino Received: "); 
     Serial.println(inData); 

     inData = ""; // Clear recieved buffer 
     } 
    } 
} 

它目前上傳的罰款,並打印「初始化」,但如果我嘗試「送」的任何數據不起作用。

+0

您是否嘗試過只要在讀取它時立即打印'received'? –

回答

1

Serial.read()返回和int。 您需要投下(char)才能將其存儲爲字符。

char recieved = (char)Serial.read(); 

BTW:變量名稱應該接收:)

編輯:

也許你從來沒有收到任何數據由於某種原因。 讓我們嘗試一些超級簡單,使用的serialEvent由@sohnryang建議(),然後儘快Serial.available()觸發打印一些文字:

while (Serial.available() > 0) { 
     Serial.println("Something has been received"); 
    } 

您應該看到此消息每次您發送的東西Arduino的時間。

+0

我試過這個,我仍然得到相同的結果:( – Mattred

+0

正如@sohnryang所說,嘗試使用serialEvent() –

0

使用SerialEvent。所以代碼看起來像這樣。

String inData; 

void setup() { 
    Serial.begin(9600); 
    Serial.println("Initialized\n"); 
} 

void loop() { 
} 

void serialEvent() { 
    while (Serial.available()) { 
     char inChar = (char)Serial.read(); 
     inData += inChar; 
     if (inChar == '\n') { 
      Serial.println("Arduino Recieved : "); 
      Serial.println("inData"); 
      inData = ""; 
     } 
    } 
}