2013-02-09 92 views
0

首先,對於令人困惑的標題感到抱歉。我正在試圖在我的arduino上製作一個簡單的程序,它能夠反映從串行監視器收到的串行輸入。我的代碼是這樣的:Arduino串行輸入字符串分散在幾行

String string= ""; 
String string2 = ""; 

void setup() 
{ 
    Serial.begin(9600); 

} 

void loop() { 


    string = ""; 

    while(Serial.available() > 0) 
    { 
     string += (char) Serial.read(); 
     Serial.flush(); 

    } 


    if(string != "") 
    { 
     Serial.println(string); 
    } 

} 

但是,當我把它上傳,並打開串口監視器,和輸入的東西,它跨越了幾行,像這樣:

Input: Why are you doing this? 

W 
hy 
are y 
ou doin 
g this? 

我一直停留在這個現在幾個小時。我的設備是Arduino Uno(官方),我在Windows 7上運行。預先感謝任何幫助。

編輯:Serial.print(字符串)不返回任何內容,將控制檯屏幕留空。

回答

0

使用Serial.print(string);代替的println()

的println()打印數據到串口作爲人類可讀的ASCII文本後跟一個回車符(ASCII 13,或 '\ R')和換行符(ASCII 10,或'\ n')。

編號:http://arduino.cc/en/Serial/Println

+0

Serial.print(String)返回什麼,我忘了提及,在我原來的帖子。 – Derek 2013-02-09 15:20:13

+0

嗨Deza,它爲我工作。嘗試用你的代碼創建一個新的空白草圖。檢查串口監視器波特率和選定的串口。 – FGiL 2013-02-09 15:42:55

+0

另外,嘗試在beginnig中輸出一些東西,比如'Serial.println(「Starting ...」);' – FGiL 2013-02-09 15:44:12

0

只要能使你的while循環 一點點延遲,這樣的代碼是:

String string= ""; 
String string2 = ""; 

void setup() 
{ 
    Serial.begin(9600); 

} 

void loop() { 


    string = ""; 

    while(Serial.available() > 0) 
    { 
     string += (char) Serial.read(); 
     Serial.flush(); 
     delay(10); 

    } 


    if(string != "") 
    { 
     Serial.println(string); 
    } 

}