Strings vergleichen

Hallo zusammen,

ich breche mir gerade einen ab, simple Strings zu vergleichen.

Der String wird so gerneriert 2+0+0

  String menue_return=String(btn_count+last_row_state,row_state_sub1);

und so abgefragt

 if (menue_return=='200')
 {
 machwas;
 }

Klappt nicht und aus Google werde ich auch nciht schlau... Kann mir jemand helfen?

poste das ganze Programm. Aus den Angaben wird hier wahrscheinlich auch keiner schlau.

Ich würde sagen, das liegt daran, wie du den String menue_return zusammen baust.

Was gibt den ein serial.print der Variablen aus?

mal mit =="200" probiert?

Am besten erst mal auf die String Objekte verzichten. Selbst die verwendest du nicht richtig und hast eine völlig unnötige Zuweisungs-Kopie da drin.

Dann stehen Strings in doppelten Anführungszeichen! Einzelne Anführungszeichen sind für einzelne ASCII Zeichen.

Eine einfache Option:

byte btn_count = 2;
byte last_row_state = 0;
byte row_state_sub1 = 0;

char menue_return[] = { btn_count + '0', last_row_state + '0', row_state_sub1 + '0', '\0' };
Serial.println(menue_return);

if(strcmp_P(menue_return, PSTR("200")) == 0)
{
   Serial.println(F("gleich"));
}

Oder als Funktion ausgelagert zur Wiederverwertung:

void loop()
{
  byte btn_count = 2;
  byte last_row_state = 0;
  byte row_state_sub1 = 0;

  char menue_return[4];
  getString(menue_return, btn_count, last_row_state, row_state_sub1);
  Serial.println(menue_return);

  if(strcmp_P(menue_return, PSTR("200")) == 0)
  {
     Serial.println(F("gleich"));
  }

  delay(2000);
}

char* getString(char* buffer, byte b1, byte b2, byte b3)
{
  buffer[0] = b1 + '0';
  buffer[1] = b2 + '0';
  buffer[2] = b3 + '0';
  buffer[3] = '\0';
  return buffer;
}

Achtung dabei: C Strings müssen eins länger als der sichtbare String sein. Also 4 für 3 Zeichen