Chaîne Comparsion: Arduino C

Je travaille sur un système domotique basé sur le Web. Mon arduino envoie donc une requête au serveur et obtient la réponse suivante sur le moniteur série, ainsi que “loneOn”, qui est dû à Serial.println (r); déclaration.

HTTP/1.1 200 OK Date: Mon, 13 Oct 2014 17:46:03 GMT Server: Apache/2.4.4 (Win32) PHP/5.4.16 X-Powered-By: PHP/5.4.16 Content-Length: 14 Content-Type: text/html loneOn.ltwoOn. loneOn 

Dans un autre cas, la réponse du serveur aura loneOff, au lieu de loneOn, je dois choisir lequel. Mais ce n’est pas le problème pour le moment, j’ai du mal à comparer les chaînes (la réponse se répercuterait également sur le moniteur série, mais là encore, ce n’est pas le problème).

 #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte server[] = { 192,168,137,1 } ; IPAddress ip(192,168,1,100); EthernetClient client; Ssortingng response = ""; Ssortingng r = ""; void setup() { Serial.begin(9600); while (!Serial) { ; } if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); Ethernet.begin(mac, ip); } delay(1000); Serial.println("connecting..."); if (client.connect(server, 80)) { Serial.println("connected"); client.println("GET /dir/ardu.php HTTP/1.1"); client.println("Host: localhost"); client.println(); } else { Serial.println("connection failed"); } } void loop(){ char c,s; while(client.available()) { c = client.read(); response = response + c; } Serial.println(response); r = (response.subssortingng(165,174)); Serial.println(r); if (r == "loneOn") Serial.println("Light 1 is on"); } 

Le problème est,

 Serial.println(r); if (r == "loneOn") Serial.println("Light 1 is on"); } 

ne fonctionne pas, je veux dire ici que je compare le Ssortingng ‘r’ avec sa valeur réelle, c’est-à-dire “loneOn”, qui est imprimé exactement comme dans le moniteur Série, mais l’instruction if ne renvoie rien. J’ai essayé plusieurs autres méthodes de comparaison de chaînes mais cela ne fonctionne pas. Je voulais savoir s’il y a quelque chose qui me manque au sujet des cordes.

 r = (response.subssortingng(165,174)); 

J’utilisais le mauvais index, il était censé commencer à 167. Cela signifie qu’il y avait des espaces ou des “\ n” qui empêchaient la chaîne de correspondre à la valeur donnée.

Essayer

 if(r.equals("loneOn")) { Serial.println("Light 1 is on"); } 

http://arduino.cc/en/Reference/SsortingngEquals