Hallo, ich muss nach einer Texteingabe den geschriebenen Text mit dem im EEPROM vergleichen umm wisssen zu können, ob ich erneut im EEPROM abspeichern soll, oder ob dort eh schon das gleiche steht. char SSID[31]; char SSID_saved[31]; const int BUFSIZE = 31; Gelesen wird eeprom_read_string(15, SSID_saved, BUFSIZE); und das Ergebis der Texteingabe wird in SSID gespeichert Einfach nur mit if(SSID==SSID_saved) unter Arduino funktioniert nicht.
Tom schrieb: > Einfach nur mit if(SSID==SSID_saved) unter Arduino funktioniert nicht. Byte fuer Byte vergleichen, memcmp(), ... - C Grundlagenbuch lesen.
Hast du auch daran gedacht, dass strcmp und memcmp bei Übereinstimmung 0 zurückliefern?
Tom schrieb: > Ich hatte das schon mit strcmp versucht, aber das hat nicht geklappt Ist denn der String 0 terminiert?
Tom schrieb: > Ich hatte das schon mit strcmp versucht, aber das hat nicht geklappt warum?
1 | char leer_str[10]={0}; |
2 | Serial.print(F("jar_str ")); Serial.println(jar_str); |
3 | my_i2c_eeprom_read_string( 0, leer_str ); |
4 | Serial.print(F("leer_str ")); Serial.println(leer_str); |
5 | if( !strcmp(leer_str, jar_str) ) |
6 | {
|
7 | Serial.println(F("strcmp OK!")); |
8 | Serial.println(F("<-Struct")); |
9 | }
|
bei mir klappt es, dann solltest du noch mal ein C Buch lesen und dich mit eeprom read beschäftigen. hast du im eeprom den String mit 0 terminiert? wenn nicht warum nicht?
Tom schrieb: > eeprom_read_string(15, SSID_saved, BUFSIZE); Zunächst müsste mal <SSID_saved> im EEPROM definiert sein. So vagabundiert es nur im RAM herum.
Opti Mist schrieb: > Zunächst müsste mal <SSID_saved> im EEPROM definiert sein. dann darf beim Programmieren aber auch nicht der ganze Stein inclusive EEPROM gelöscht werden, ich hatte deswegen lieber das EEPROM der RTC genutzt. EESAVE könnte man im Atmel ja auch noch irgendwie aktivieren!
:
Bearbeitet durch User
Klein und Grossbuchstaben gemischt? Die sind bei einem Vergleich mit strcmp() anders.
PittyJ schrieb: > Klein und Grossbuchstaben gemischt? Die sind bei einem Vergleich mit > strcmp() anders. da hilft toupper() oder tolower()
Tom schrieb: > char SSID[31]; > char SSID_saved[31]; > const int BUFSIZE = 31; Weitaus intelligenter wäre:
1 | #define BUFSIZE 31
|
2 | char SSID[BUFSIZE]; |
3 | char SSID_saved[BUFSIZE]; |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.