Bei Variablen selbe Werte aber if schleife wird nicht ausgeführt :smiley-yell:

Hi,

Ich werd noch bekloppt, ich versuche mit einem Arduino mega und einem Siemens TC35 Modul mittels SMS Befehl zuschalten.

hier mein Code dazu:

 #include <SoftwareSerial.h>  
char gsm_char=0;      //Stores character from the gsmSerial
char taste;
int code;
int pincode;
int n_sms,x,y,z,sms_start;
char data[256];
char keywort[256] = "Pipi";
char erg[256];

SoftwareSerial gsmSerial(10,11);  //Creates a software serial port. (rx,tx)
 
void setup()
{
  //Initialize serial ports for communication.
  Serial.begin(9600);
gsmSerial.begin(9600);
  Serial.println("Starting TC35 and debug Communication...");
}
 
void loop() {
  //If a character comes in from the cellular module...
  if(gsmSerial.available() > 0){
    gsm_char=gsmSerial.read();    //Store the char in gsm_char.

 
            data[x]=gsm_char;  
            x++;   


        
            if(data[x-1]==0x0D&&data[x-2]=='"'){
                x=0;
            }
        

  
          
  }
  

          
if(data[x] == keywort[y]){erg[y]=data[x]; y = y + 1;}else{y=0;}


Serial.println(erg);
Serial.println(keywort);
Serial.println("====");

if(erg==keywort){
Serial.println("JAAAAAAAAAAAAAAAAAAAAAAAAAA keywort war korrekt");
}
            
  //Read serial input
   if(Serial.available() > 0){
    gsm_char=Serial.read();  //Store char in gsm_char (Not really from the gsm, just saving some memory)
    //Evaluate input.
    if(gsm_char=='t'){
      gsmSerial.print("AT\r");  //Send test command
    } else if(gsm_char=='p'){
      gsmSerial.print("AT+CPIN?\r");  //Enter pin, hardcoded
    } else if(gsm_char=='g'){
      gsmSerial.print("AT+CMGF=1\r"); //Set text mode.
    } else if(gsm_char=='e'){
      gsmSerial.print("ATD+4915777849093;\r"); // ruft die rufnummer an
    } else if(gsm_char=='n'){
      gsmSerial.print("at+creg?\r");
    }else if(gsm_char=='x'){
      gsmSerial.print("at+cops?\r");
    }else if(gsm_char=='b'){
      gsmSerial.print("AT+CMGF=0\r"); // Dingsbums mode
    }else if(gsm_char=='c'){
      gsmSerial.print("AT+cmgr=1\r"); // SMS 1 lesen vorher in text mode gehen mit "g"
    }else if(gsm_char=='l'){
      gsmSerial.print("AT+cmgd=1\r"); // SMS absenden 
    }else if(gsm_char=='4'){
      gsmSerial.print("at+cmgd=1\r"); // nachricht 1 löschen
    }else if(gsm_char=='3'){
      gsmSerial.print("AT+CMGL[=ALL]\r"); // SMS speicher auflisten
    }else if(gsm_char=='2'){
      gsmSerial.print("AT+CSQ\r"); // empfang erste zahl => 0 -113 dBm or less | 1 -111 dBm | 2...30 -109... -53 dBm | 31 -51 dBm or greater | 99 not known or not detectable .... 2te zahl => fehlerrate
    }else if(gsm_char=='h'){
      gsmSerial.print("ATH\r"); // legt auf
    }else if(gsm_char=='5'){
      gsmSerial.print("AT+CCLK=\"13/01/30,22:35:00\"\r"); // uhrzeit einstellen
    }else if(gsm_char=='u'){
      gsmSerial.print("AT+CCLK?\r"); // uhrzeit lesen
    }else if(gsm_char=='s'){
      //Send sms!
      gsmSerial.print("AT+CMGS=004915777849093\r"); //AT command to send SMS
      delay(100);
      gsmSerial.print("Hello Henrik"); //Print the message ( OHNE \r ) und abschließenden das kommando \x1a hinterhersenden !
      delay(10);
      gsmSerial.print("\x1A"); //Send it ascii SUB
    }
  }



        
        

 

}

Variable erg und keywort sind laut serial ausgabe identisch, jedoch führt der nicht die if schleife aus, wieso ?

Danke

Weil Du mit
if(erg==keywort)
nicht 2 Strings vergleichst.
Grüße Uwe

hi,

such nach strcmp...

gruß stefan

Und hier noch eine ganz wichtige Info: http://www.if-schleife.de/ XD
Mario.

mkl0815:
Und hier noch eine ganz wichtige Info: http://www.if-schleife.de/ XD

Hallo Mario,
kennst du noch mehr solche lehrreichen, wenn auch etwas minimalistischen, Webseiten zum Thema Programmierung?
Da wird man wenigstens beim Browsen nicht von den wirklich wichtigen Inhalten abgelenkt und man ist auch nicht von der Stoffmenge überfordert! :wink:

Gruß
Wolfgang