#1 Програмування Arduino » Запись и чтение из eeprom массивов символов » 2020-05-01 21:59:18

maks.dav
відповідей: 2

Имеется следующая задача:

Есть шилд MEGA2560.

Необходимо записать в память EEPROM несколько динамических массивов символов, затем их считать из EEPROM в массивы.

Длина массивов первоначально неизвестна, поэтому они динамические с максимальным количеством элементов (в моём случае 20).

Делается это для экономии оперативной памяти, т.к. работа идёт с большим количеством массивов.

Запись и чтение происходит следующим образом:

#include <EEPROM.h>
char* str = "text";
char* str1;
char* str2;
...
// Выделяем память для str1
str1 = new char[20];
// Вставляем какие-то данные
str1[0] = 'a';
str1[1] = 'b';
str1[2] = 'c';
// Запись в EEPROM str1
EEPROM.put(address1, str1);
// Освобождаем память от str1
delete [] str1;
// Запись в EEPROM str = "text" - статический массив символов
EEPROM.put(address, str);
*****************************************
Перезагружаем контроллер
*****************************************
// Читаем из EEPROM в str1
EEPROM.get(address1, str1); // Читает ерунду
// Читаем из EEPROM в str2
EEPROM.get(address, str2); // Читает нормально - str = "text"!..

Підвал форуму