2017-12-31 128 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

, "기록된다 – anime

+0

시리얼 콘솔에서 확인 \ 연구 \ NOK \ 입력을 받아 Serial.read()로 입력이 무엇인가를 설명 무엇을 입력하면 프로그램의 시리얼 모니터를 통해 제공되는 구체적하세요 r \ n ". 'char inChar2 = char (Serial.read());'는 입력의 char을 하나씩 취합니다. –

+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=""; 
    } 
}