Forum: Compiler & IDEs Struct array in den EEprom schreiben und lesen


von Andreas F. (codecasa)


Lesenswert?

Hallo

ich bekomme es nicht hin mein Struct array in den eeprom zu schreiben 
und anschliesend wieder zu lesen


Hier mal die Structuren:

struct structCMD{
int Befehl;
int param1;
int param2;
} cmdP = {
0, 0 ,0
};

structCMD CMD[50];
int anzCMD = 0;

struct StoreStruct{
    float impPause;
    float impDauer;
} storage = {
0, 0
};




void loadData() {
  unsigned int adrIP =0;
  for (unsigned int t=0; t<sizeof(storage); t++)
  {
      *((char*)&storage + t) = EEPROM.read(CONFIG_START + t);
      adrIP = t;
  }

  adrIP=adrIP + 1;
  for (int iP=0; iP<anzCMD; iP++)
  {
    for (unsigned int t=0; t<sizeof(cmdP); t++)
    {
      *((char*)&CMD[iP] + t) = EEPROM.read(adrIP + (iP + sizeof(cmdP)) 
+t);

    }
      Serial.println("Wert=");
      Serial.print(CMD[iP].Befehl);
      Serial.println("");

  }


}



void saveData() {

  unsigned int adrIP =0;
  for (unsigned int t=0; t<sizeof(storage); t++)
  {
      EEPROM.write(CONFIG_START + t, *((char*)&storage + t));
      adrIP = t;
  }


  adrIP=adrIP + 1;
  for (int iP=0; iP<anzCMD; iP++)
  {
    for (unsigned int t=0; t<sizeof(cmdP); t++)
    {
      EEPROM.write(adrIP +(iP + sizeof(cmdP))+ t, *((char*)&CMD[iP] + 
t));
    }
      //Serial.println("Wert=");
      //Serial.print(CMD[iP].Befehl);
      //Serial.println("");

  }


}

von Andreas F. (codecasa)


Lesenswert?

Okay ich hab den Fehler endeckt

*((char*)&CMD[iP] + t) = EEPROM.read(adrIP + (iP statt<+> besser <*> 
sizeof(cmdP))

Und beim speichern das selbe: hehe

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
Noch kein Account? Hier anmelden.