C – IF (char == “ZYX”) ne fonctionne pas

J’envoie d’arduino à arduino chaîne (I2C), attrape et enregistre au caractère [10] Quand je compare cette variable à du texte, condition n’a pas execute: – / Et je ne sais pas pourquoi …

char dataRx[10] = ""; void DaemonReceiving(int howMany){ int index = 0; while(Wire.available() > 0){ char c = Wire.read(); dataRx[index++] = c; dataRx[index] = '\0'; } Serial.println(dataRx); if(dataRx == "HELLO"){ Wire.beginTransmission(1); Wire.write("HI"); Wire.endTransmission(); } } 

Pour comparer la chaîne dataRX à “HELLO”, utilisez:

 if (strcmp (dataRx,"HELLO") == 0) { // matches HELLO } 

Si c’est C, vous devez utiliser strcmp , sinon vous comparez simplement deux pointeurs: l’emplacement de “HELLO” et l’emplacement de dataRx (qui échouera).

Notez que cela n’a rien à voir avec Arduino 🙂

Ceci compare les valeurs de pointeur:

 if(dataRx == "HELLO") 

vous avez besoin de la comparaison de chaîne strcmp :

 if(strcmp(dataRx, "HELLO") == 0)