Einen Char Array mit einem String vergleichen... Wie?



  • Hallo

    ich arbeite gerade an einem Arduino projekt, bei dem ich mittels eines Wirless Modules (NRF4L01) einen Char Array übermittle.

    Der Empfänger soll diesen Char Array auswerten und je nach dem was er beinhaltet etwas ausführen.

    Ich verstehe aber nicht, wie ich diesen Char Array in einer if-Schleife vergleichen kann.

    void loop() {
    
      if (radio.available()) {
        char text[32] = "";               //Create string of 32 Chars
        radio.read(&text, sizeof(text));  //Recieve data and save as String
        Serial.println(text);             //Print text (Hello World wird ausgegeben)
    
        for(int i = 0; i <= sizeof(text); i++){   //Zur Fehlersuche
          Serial.println(i);                      //Zu jedem Array wird der dazugehörige Char ausgegeben
          Serial.println(text[i]);
        }
    
         Serial.println(sizeof(text));
         if(text[0] == "H"){             //Anhand der Fehlersuche oben, sehe ich genau, dass der array #0 "H" entpricht
            for (int y = 0; y < 3; y++){
            digitalWrite (Buzzer, HIGH) ;// Buzzer On
            delay (50) ;// Delay 1ms 
            digitalWrite (Buzzer, LOW) ;// Buzzer Off
            delay (50) ;// delay 1ms
    
            Serial.println("String is true");
            }
         }else{
            for (int y = 0; y < 3; y++){
            digitalWrite (Buzzer, HIGH) ;// Buzzer On
            delay (300) ;// Delay 1ms 
            digitalWrite (Buzzer, LOW) ;// Buzzer Off
            delay (400) ;// delay 1ms
    
            Serial.println("String is false");
           }
         }
      }
    }
    

    Eigentlich sollte das Programm den oberigen if-Block ausführen, da text[0] "H" entspricht. Dies tut das programm jedoch nicht.

    Vielen Dank im Voraus
    Euer Busch im Garten



  • Du willst keinen String sondern ein Zeichen: 'H'



  • Mach mal das 'H' (Zeile 14) in einfache Hochkommas. Das ist jedenfalls besser. 🙂



  • Ich pushe mal meinen Beitrag-Counter: http://www.if-schleife.de/

    P.S.: Gehört ebenfalls nicht zum Thema, aber ich würde mir mal überlegen, ob du 'loop' nicht unterteilen willst, die Funktion ist recht lang.



  • Vielen Dank! Das Problem ist gelöst.

    Es lag an den Hochkommas 🙂



  • Tarnpflanze schrieb:

    Vielen Dank! Das Problem ist gelöst.

    Es lag an den Hochkommas 🙂

    Das nächste Mal beachte bitte die Warnungen des Compilers. Du hast einen einzelnen Char mit einem Char-Pointer verglichen. Dass das ohne Cast durchgeht, ist schon erstaunlich. 😞



  • Andromeda schrieb:

    Das nächste Mal beachte bitte die Warnungen des Compilers.

    Wenn man die Warnung nicht versteht, darf man sie ignorieren.

    🤡


Anmelden zum Antworten