2017-12-31 384 views
0

次のコードは動作していますが、何も印刷したくありません。ArduinoプログラムがSerial.print(5chars)なしで動作しない

while(true) { 
    String inputString2=""; 
    while(Serial.available()) { 
    char inChar2 = char(Serial.read()); 
    //on va lire un char et l'enregistrer dans inChar 
    inputString2 += inChar2; 
    //on va concaténer inChar dans inputString 
    Serial.print("12345"); 
    } 
    if (inputString2.indexOf("ok\r\nok\r\n")!=-1) { 
    //on vérifie quelle donnée a été lue 
    break; 
    } 
    inputString2=""; 
} 

Serial.print("12345");が5文字未満の場合、プログラムはループのブレークに達していません。

if (inputString2.indexOf("ok\r\nok\r\n")!=-1) { 
    //on vérifie quelle donnée a été lue 
    break; 
} 
+0

)Serial.read(へのご入力が何であるかを説明し、あなたがプログラムにシリアルモニタを通じて与えているものを入力し、より具体的にOK \ rを\ NOK \」書かれているところ – anime

+0

シリアルコンソールから入力を受け取りくださいr \ n " 'char inChar2 = char(Serial.read());'はループ内で入力のcharを1つずつ取ります。 –

+0

https://hackingmajenkoblog.wordpress.com/2016/02/01/reading-serial-on-the-arduino/ –

答えて

0

while loop(while(Serial.available()))は、他のデバイスからのシリアル送信よりもはるかに高速です。したがって、inputString2は常に初期化されます。

は、簡単な編集です:

String inputString2=""; 
while(true) {   
    while(Serial.available()) { 
    char inChar2 = char(Serial.read());    
    inputString2 += inChar2;   
    } 
    if (inputString2.indexOf("ok\r\nok\r\n")!=-1) { 
    inputString2=""; //clear variable 
    break; 
    } 
} 

しかし、それは良いではありません。これはどう?

//global variable 
String inputString2=""; 

void loop() { 
    //If there is no data to read, exit loop 
    if(Serial.available() <= 0) 
    return; 
    char inChar2 = Serial.read(); 
    inputString2 += inChar2; 
    if (inputString2.indexOf("ok\r\nok\r\n")!=-1) { 
    // to do begin 
    // to do end 
    inputString2=""; 
    } 
} 
関連する問題