Go Down

Topic: Vergleich zweier Strings funktioniert nicht (Read 474 times) previous topic - next topic

Sadbi

Hallo an Alle!

Ich quäle mich schon seit Stunden und verzweifle fast. Im folgenden Code vergleiche ich zwei Strings.

Adafruit_MQTT_Subscribe *subscription;
  while ((subscription = mqtt.readSubscription(5000))) {
    if (subscription == &onoffbutton) {
      Serial.print(F("Got: "));
      Serial.println((char*)onoffbutton.lastread);
      if ( strcmp((char *)onoffbutton.lastread), "ON")==0){
          //Serial.println("Jap es wurde eingeschaltet");
        }
       else{
        //Serial.println("fff");
       }
    }
  }

Laut seriellem Monitor wird der Wert ((char*)onoffbutton.lastread) eingelesen. Ordne ich ihn einer Variablen zu char* wird sie auch korrekt ausgegeben.
Wenn ich jedoch mit IF:
if (Variable == "ON") erkennt er die Bedingung nicht als war an, oben ein zweiter Lösungsansatz, der beim Kompilieren folgenden Fehler meldet

too few arguments to function 'int strcmp(const char*, const char*)'

Ich erkenne allerdings keinen Fehler, den Code habe ich so aus dem Netz übernommen.

Vermutlich wirft einer von Euch einen Blick darauf und weiß die Antwort, aber ich stehe an.

Vorerst einmal Danke an Alle die sich bemühen.
Sebastian



uxomm

Da ist zumindes eine Klammer zu viel - die sollten doch immer paarweise auftreten :)
Versuche es doch mal so:
Code: [Select]
if ( strcmp((char *)onoffbutton.lastread, "ON")==0){
Always decouple electronic circuitry.

Sadbi

Hallo Danke vorerst,

kann es momentan nicht ausprobieren, der Testaufbau dat das Ladekabel meines Sohnes nicht überstanden, werde es aber später ausprobieren, aber ich vermute dass das die Lösung ist

Sadbi

Danke, das war die Lösung, so eine kleine Klammer hat mich Stunden gequält.

uxomm

Super, dass es jetzt funktioniert und danke für die Rückmeldung!
Always decouple electronic circuitry.

Go Up