2014-11-22 98 views
0

我在這裏遇到一些基本問題。 當你想讀的串行數據作爲一個字符串,基於該值比做點什麼/很多事情,你有這樣的問題:只有完成讀取序列後,Arduino才能做些什麼?

while(Serial.available()) 
     { 

     character = Serial.read(); 
     content.concat(character); 
     delay(10); 

     } 

      //do something with the value 
      int myInt = content.toInt(); 
      float myFloat=myInt; 
       analogWrite(10,myInt) ; 

       //clear 
       content="" ; //i must clear it for the next word ! 

當你明確content,比下一個循環,你得到的內容=「」 ,和你不想把這個值放到模擬/你做什麼用它,但只有當有一個更改上的串行,比使用新的價值。

我無法找到一個方法來做到這一點..我沒有一個標誌,當他讀完了新的數據(僅)

+0

一個解決方案,我發現我認爲真的不是優雅的,是設置一些布爾值,並且當他完成while循環時,他檢查該布爾是否爲1,你做你想做的事,並將布爾值設置爲0,直到下一個while循環。似乎很奇怪,對於這樣一個簡單的任務 – Curnelious 2014-11-22 14:02:40

回答

1

只是包裝它的,如果是這樣的:

if(!(content == "")) { 

    //do something with the value 
    int myInt = content.toInt(); 
    float myFloat=myInt; 
    analogWrite(10,myInt); 
    //clear 
    content="" ; //i must clear it for the next word ! 

} 

您還可以,如果你想通過把頂部爲串行輸入等待暫停代碼:

while (!(Serial.available())) { } 

你上面的初始序列讀取的代碼段

+0

ITS與放置bollean相同,但可以。 – Curnelious 2014-11-23 07:30:13

+0

除了你正在使用現有的變量,咖啡路徑中不需要額外的布爾操作,並且我發現這樣的代碼更具可讀性,因爲很明顯這個塊應該只在「內容不爲空」時運行 – djUniversal 2014-11-23 11:23:48

+0

我希望這有幫助! – djUniversal 2014-11-23 11:24:27