• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 1 głosów - średnia: 1
  • 1
  • 2
  • 3
  • 4
  • 5
próba budowy systemu alarmowego
#29
Ogarnąłem to z czym miałem problem i jest prawie ok, prawie bo czegoś nie ogarniam. Przy pierwszym zapisie hasła do eeprom jest ok, ale gdy chcę zmienić hasło ponownie i zapisać je do eeprom, to otrzymuje takie coś:

[Obrazek: 3c7f535fe1d85bfcf395cc68088b668d.png]

Tak wiem, że zapis jest w kolejnych bajtach, pytanie dlaczego tak się dzieje? Oczywiście próbowałem zerować zmienną index = 0; licząc, że zapis nastąpi od pierwszego bajta, ale nic to nie daje. 

zmienne:
Kod:
int addr = 0;
int index = 0;
int currentAddr = 0;

Część kodu z która mam problem:

Kod:
void changePassword() {
   x = 0;
   lcd.clear();
   lcd.print(F("ZMIANA PINU #-OK"));
   newPasswordString = Password();
   zapisEEPROM();
   newPasswordString.toCharArray(newPassword, newPasswordString.length()+1);//convert string to char array
   password.set(newPassword);
   resetPassword();
   Serial.println(newPasswordString.length());
    if (newPasswordString.length() < minPasswordLength){
     newPasswordString.remove(0,20);
     Serial.println(newPasswordString.length());
     lcd.clear();
     lcd.setCursor(0, 0);
     lcd.print(F("ZA KROTKI PIN"));
     lcd.setCursor(0, 1);
     lcd.print(F("MIN. DL. PINU"));
     lcd.setCursor(15, 1);
     lcd.print(minPasswordLength); 
     x = 0;
     delay(3000);
     changePassword();
    }
   if (newPasswordString.length() > maxPasswordLength){
     newPasswordString.remove(0,20);
     Serial.println(newPasswordString.length());
     lcd.clear();
     lcd.setCursor(0, 0);
     lcd.print(F("ZA DLUGI PIN"));
     lcd.setCursor(0, 1);
     lcd.print(F("MAKS DL. PINU"));
     lcd.setCursor(15, 1);
     lcd.print(maxPasswordLength); 
     x = 0;
     delay(2000);
     changePassword();
   }else{
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(F("PIN ZMIENIONY NA:"));
      lcd.setCursor(0, 1);
      lcd.print(newPasswordString);     
      delay(3000);
      lcd.clear();
      x = 0;
     }
}

String Password(){
  lcd.setCursor(x, 1);
    String password = "";
    while (1){
        char key = kpd.getKey();
          if (key){  
                if ((key=='1') || (key=='2') ||
                    (key=='3') || (key=='4') || (key=='5') ||
                    (key=='6') || (key=='7') || (key=='8') ||
                    (key=='9'))   // jesli wcisnolem klawisze 1 - 9              
                    {
                         lcd.print(key);
                         lcd.print(" ");  
                         password = password + key;  
                    }
                    if (key=='#'){break; }// zatwierdzamy wybor                                         
        }
    }
    return password;
}



void zapisEEPROM(){
  for (index = 0; index < newPasswordString.length(); index++) {
    EEPROM.write(addr, newPasswordString[index]);
    delay(10);

    Serial.print("Writing ");
    Serial.print(newPasswordString[index]);
    Serial.print(" in address ");
    Serial.println(addr);

    addr++;
  }
  EEPROM.write(addr, '\0');
  odczytEEPROM();
}

void odczytEEPROM(){
EEPROM.read(addr);

  int currentAddr = 0;
  char readChar;
  String readGreeting = "";

  while (readChar != '\0') {

    readChar = EEPROM.read(currentAddr);
    delay(10);
    if (readChar != '\0') {
      readGreeting += readChar;
    }

    currentAddr++;

    Serial.print(readChar);
    Serial.print(" in address ");
    Serial.println(currentAddr);
  }

  Serial.print("Final string read from EEPROM: ");
  Serial.println(readGreeting);
  if (currentAddr==addr){
    currentAddr=0;}
}
 
Odpowiedź
  


Wiadomości w tym wątku
próba budowy systemu alarmowego - przez Lucek20 - 05-01-2020, 14:31
RE: próba budowy systemu alarmowego - przez elvis - 05-01-2020, 15:02
RE: próba budowy systemu alarmowego - przez Lucek20 - 05-01-2020, 15:08
RE: próba budowy systemu alarmowego - przez Lucek20 - 05-01-2020, 19:25
RE: próba budowy systemu alarmowego - przez Lucek20 - 05-01-2020, 22:04
RE: próba budowy systemu alarmowego - przez Lucek20 - 10-01-2020, 00:03
RE: próba budowy systemu alarmowego - przez Lucek20 - 10-01-2020, 12:32
RE: próba budowy systemu alarmowego - przez Lucek20 - 13-02-2020, 23:08
RE: próba budowy systemu alarmowego - przez Lucek20 - 14-02-2020, 22:32
RE: próba budowy systemu alarmowego - przez Lucek20 - 15-02-2020, 21:02
RE: próba budowy systemu alarmowego - przez Lucek20 - 15-02-2020, 22:36
RE: próba budowy systemu alarmowego - przez Lucek20 - 16-02-2020, 12:04
RE: próba budowy systemu alarmowego - przez Lucek20 - 22-02-2020, 12:34
RE: próba budowy systemu alarmowego - przez Lucek20 - 26-02-2020, 17:23
RE: próba budowy systemu alarmowego - przez Lucek20 - 26-02-2020, 19:12
RE: próba budowy systemu alarmowego - przez Lucek20 - 01-03-2020, 20:42
RE: próba budowy systemu alarmowego - przez Lucek20 - 03-03-2020, 21:44
RE: próba budowy systemu alarmowego - przez Lucek20 - 04-03-2020, 23:42
RE: próba budowy systemu alarmowego - przez Lucek20 - 15-03-2020, 20:33
RE: próba budowy systemu alarmowego - przez Lucek20 - 20-03-2020, 23:43
RE: próba budowy systemu alarmowego - przez Lucek20 - 01-04-2020, 14:30
RE: próba budowy systemu alarmowego - przez Lucek20 - 04-04-2020, 09:33
RE: próba budowy systemu alarmowego - przez Lucek20 - 12-04-2020, 08:24
RE: próba budowy systemu alarmowego - przez Lucek20 - 12-04-2020, 22:17
RE: próba budowy systemu alarmowego - przez Lucek20 - 23-04-2020, 11:41
RE: próba budowy systemu alarmowego - przez Lucek20 - 26-04-2020, 14:47

Skocz do:


Przeglądający: 2 gości