2016-11-13 2 views
0

J'ai programmé un Engduino pour mesurer la température dans la pièce en utilisant sa thermistance et sortir les valeurs au port série; quand le programme commence, il sort "start temp" et quand le programme se termine, il sort "end temp", et entre les deux sorties la valeur de température toutes les 2 secondes. J'utilise .readString dans Processing pour lire ces valeurs lors de leur mesure..equals n'évalue jamais à vrai dans le traitement

String str = myEngduino.readString(); 
if(str!=null){ 
    println(str); 
} 

Ce code fonctionne très bien et les valeurs en cours d'impression à la console sont en effet « start temp », puis les températures qu'elles sont lues, puis « temp fin » lorsque le programme se termine. Je ne comprends pas pourquoi l'instruction if dans ce code évalue jamais vrai:

String str = myEngduino.readString(); 
if(str!=null){ 
    println(str); 
    if(str.equals("start temp")){ 
     println("START"); 
    } 
} 

str est certainement réglé sur « start temp », car il est imprimé à la console, alors pourquoi pas mon cas déclaration évaluer à vrai à ce stade?

Répondre

0

Je recommande une double vérification si readString() renvoie également le nouveau caractère de ligne (\n).

Vous pouvez essayer d'utiliser trim():

String str = myEngduino.readString(); 
if(str!=null){ 
    str = str.trim(); 
    println(str); 
    if(str.equals("start temp")){ 
     println("START"); 
    } 
} 

Une autre solution que je peux penser vérifie si str. contains() au lieu de equals()