3d_killer

Запись и чтение строки в EEPROM

12 сообщений в этой теме

3d_killer    3

Собственно, искал код в интернете, пробовал так ничего и не получилось при return выдает ошибки, мне нужно сделать 2 метода которыми получить и записать пароль в EEPROM

2017-10-15_13-38-19.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
snn_krs    6

Пароль строка, значит и возврашать надо строку

Можно так

String long_read_str( int adr)
{
 String pass = "******";
 for ( byte i = 0; i < 6; i++)
 {
   EEPROM.get( adr + i, pass );
  }
  return pass;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
snn_krs    6

Вставлял как текст поэтому удалилось

  EEPROM.get( adr + i, pass );

и возвращаемое значение

String long_read_str( int adr)

String long_read_str( int adr)
{
 String pass = "******";
 for ( byte i = 0; i < 6; i++)
 {
   EEPROM.get( adr + i, pass[i] );
  }
  return pass;
} 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

что то с таким кодом ничего не читает, всегда пустое значение возвращает, но вроде как пишет, так как hex EEPROM меняется

//******************************************************************************************
// чтение
//******************************************************************************************
String long_read_str( int adr)
{
    String pass = "";
    for ( byte i = 0; i < 6; i++){EEPROM.get( adr + i, pass[i] );}
    return pass;
} 
//******************************************************************************************
// запись
//******************************************************************************************
void long_write_str(int addr, String pass) {
    for(byte i = 0; i < 6; i++) EEPROM.put(addr+i, pass[i]);
  }

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

вот так все заработало

//******************************************************************************************
// чтение
//******************************************************************************************
String long_read_str( int adr)
{
    char pass[6];
    for ( byte i = 0; i < 6; i++){EEPROM.get( adr + i, pass[i] );}
    return pass;
} 
//******************************************************************************************
// запись
//******************************************************************************************
void long_write_str(int addr, String pass) {
    for(byte i = 0; i < 6; i++) EEPROM.put(addr+i, pass[i]);
  }

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

вылезла какая-то странная проблема, если символов менее 6 то все записывается и читается нормально, но если символов 6, то при загрузке из EEPROM и выводе на экран появляются еще какие-то 2 символа как я ни менял программу удалить их не удалось, что это может быть такое?

//******************************************************************************************
// чтение
//******************************************************************************************
String long_read_str( int adr)
{
    char pass[6];
    for ( byte i = 0; i < 6; i++){EEPROM.get( adr + i, pass[i] );}
    return pass;
} 
//******************************************************************************************
// запись
//******************************************************************************************
void long_write_str(int addr, String pass) {
    for(byte i = 0; i < 6; i++) EEPROM.put(addr+i, pass[i]);
  }

 

IMG_20171015_200217[1].jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
snn_krs    6
2 minutes ago, 3d_killer said:

char pass[6];

Думаю надо сделать 7 символов

char pass[7];

pass[ 7 ] = 0;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

попробовал, непонятных символов становится 3, если уменьшать, то есть ставить 5, то нужных символов становится 5 + 2 символа мусора

вот так вроде пошло

char pass[7]="";
    for ( byte i = 0; i < 6; i++){EEPROM.get( adr + i, pass[i] );}
    return pass;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
snn_krs    6

Я несколько запутался. Строка из 7-ми символов индексы от 0 до 6. Локальные переменные не обнуляются поэтому надо самому обнулять последний. Иначе может при изменении программы не пойти

pass[6] = 0;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 063
5 часов назад, 3d_killer сказал:

вот так вроде пошло

признак окончания строки не проще сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...