Um einen Wert im EEPROM ändern zu können, muss man die Adresse wissen an dem dieser gespeichert ist.
Wenn man im Terminal eine Zahl, z.B. 205, eingibt dann wird der Wert der unter dieser Adresse gespeichert ist, ausgegeben.
Will man diesen Wert nun ändern, gibt man einfach die Adresse gefolgt von einem = und dem neuen Wert ein.
Ich ändere so z.B. meine DeviceAdressen wenn ich einen TemperaturSensor tauschen will.
205=10,16,2E,57,02,08,00,2F
const int BUFSIZE=50; char buffer[BUFSIZE]; char serialResponseStr[BUFSIZE]; char stringBuffer[BUFSIZE+1]; void loop() { if(Serial.available()) changeEEPROMValue(); } /****************************************************** Wert im EEPROM an der angegebenen Adresse ändern * Eingabe über den Seriellen Port * Adresse = Wert * zB. 2=5A:A2:DA:0D:56:7A zum ändern der Mac-Adresse * ******************************************************/ void changeEEPROMValue() { char *adresse; char *wert; if(Serial.available()>0) { char c = Serial.read(); if(c != '\n') { serialResponseStr[x++] = c; } else { serialResponseStr[x++] = '\0'; strncpy(stringBuffer, serialResponseStr, BUFSIZE); adresse = strtok(serialResponseStr, "="); wert = strtok(NULL, "="); if(wert) { //Alten Wert an der Adresse aus EEPROM lesen if(eeprom_read_string(atoi(adresse), buffer, BUFSIZE)) { Serial.print("Alter Wert an Adresse: "); Serial.print(adresse); Serial.print(" = "); Serial.print(buffer); //Neuen Wert in EEPROM speichern strcpy(buffer, wert); //25 Zeichen eeprom_write_string(atoi(adresse), buffer); eraseBuffer(); } //Neuen Wert aus EEPROM auslesen if(eeprom_read_string(atoi(adresse), buffer, BUFSIZE)) { Serial.print(", Neuer Wert = "); Serial.println(buffer); eraseBuffer(); initializeVariables(); Serial.println(interval); } } else { if(eeprom_read_string(atoi(adresse), buffer, BUFSIZE)) { Serial.print("Wert an Adresse: "); Serial.print(adresse); Serial.print(" = "); Serial.println(buffer); eraseBuffer(); } } x=0; } } }
The post Werte im EEPROM über Seriellen Port ändern appeared first on Fluuux - TechBlog.