Dzięki

na pewno zapożyczę wstawianie domyślnie 0xFF kiedy brak jest adresu.
Póki co udało mi się osiągnąć cel korzystając z podpowiedzi od @klew i @krycha88
Zapis: (0x28,0x6E,0xCA,0x79,0xA2,0x1,0x3,0xF5)
Code: Select all
int ep_start = ep_min_ds_addr;
for (int i = 0; i < max_ds; i++) {
s_dsaddr[i] = server.arg("dsAddress" + String(i) + "");
if (s_dsaddr[i].length() > 0) {
char c_dsaddr[8];
strcpy(c_dsaddr, s_dsaddr[i].c_str());
int counter = 0;
char *pch = strtok(c_dsaddr, " ,");
while (pch != NULL) {
dsaddr[i][counter] = strtol(pch, NULL, 16);
pch = strtok(NULL, " ,");
counter++;
if (counter >= 8) break;
}
EEPROM.put(ep_start, dsaddr[i]);
EEPROM.commit();
Serial.printf("\n\r# saved ds(%d) address > %s > (%d)", i, s_dsaddr[i].c_str(), ep_start);
}
ep_start += sizeof(dsaddr[i]);
}
Odczyt: (286ECA79A20103F5)
Code: Select all
int ep_start = ep_min_ds_addr;
for (int i = 0; i < max_ds; i++) {
EEPROM.get(ep_start, dsaddr[i]);
for (uint8_t ii = 0; ii < 8; ii++) {
if (dsaddr[i][ii] < 16) ds_address[i] += String(0, HEX);
ds_address[i] += String(dsaddr[i][ii], HEX);
}
Serial.printf("# ds(%d) address: %s > (%d)\n\r", i, ds_address[i].c_str(), ep_start);
ep_start += sizeof(dsaddr[i]);
}