Arduino:Библиотеки/EEPROM/get()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция EEPROM.get()[1]

Считывает данные из EEPROM-памяти, но не напрямую, а через указание объекта (например, переменной), хранящего считываемое значение.

Синтаксис

EEPROM.get(address, data)

Параметры

address  участок EEPROM-памяти, с которого будет  выполнено считывание. Значения начинаются с «0». Тип данных  int.
data  объект, значение которого нужно прочесть. Это может быть и примитивный тип данных (например, float), и пользовательский struct.

Что возвращает

Значение, записанное в объект, который находится по указанному адресу.

Пример

#include <EEPROM.h>

struct MyObject{
  float field1;
  byte field2;
  char name[10];
};

void setup(){

  float f = 0.00f;   // переменная для хранения данных, считанных из EEPROM-памяти
  int eeAddress = 0; // адрес в EEPROM-памяти, с которого будет начато считывание 

  Serial.begin( 9600 );
  while (!Serial) {
    ; // ждем подключения последовательного порта (нужно только для Leonardo) 
  }
  Serial.print( "Read float from EEPROM: " );  // "Данные типа float, считанные из EEPROM-памяти: "

  // считываем данные типа float из EEPROM-памяти, находящиеся по адресу «eeAddress»:
  EEPROM.get( eeAddress, f );
  Serial.println( f, 3 );  // если по указанному адресу находятся некорректные float-данные, эта функция может вернуть запись «ovf, nan»

  // функцию get() можно использовать и для пользовательских структур: 
  eeAddress = sizeof(float); // перемещаемся к участку EEPROM-памяти, находящемуся вслед за тем, где хранится переменная «f»
  MyObject customVar; // переменная для значения, считанного из пользовательского объекта
  EEPROM.get( eeAddress, customVar );

  Serial.println( "Read custom object from EEPROM: " ); // "Данные из пользовательского объекта, считанные из EEPROM-памяти: "
  Serial.println( customVar.field1 );
  Serial.println( customVar.field2 );
  Serial.println( customVar.name );
}

void loop(){ /* цикл loop() оставим пустым */ }

См.также

  1. EEPROM.write()
  2. EEPROM.read()
  3. EEPROM.update()
  4. EEPROM.put()


Внешние ссылки