как проверить, хорошо ли чтение ssid / pass с eeprom - PullRequest
0 голосов
/ 09 октября 2019

в Arduino Я читаю wssid и пароль от eeprom, и я хотел бы проверить их (должны быть строки). По сути, мне нужно понять, хорошо ли то, что я извлекаю из памяти.

Во всех опробованных мною вариантах я сталкиваюсь с ошибками, возможно, я не очень хорошо понимаю символы, массив символов и строки. Например, как заставить работать код ниже?

bool isStringValid( const char * inputString )
{
  char c;
  while ( (c = *inputString++) )
    if ( c != '.' && !isalnum(c) )
      return false;
  return true;
} 

boolean restoreConfig() {
  EEPROM.begin(512);
  for (int i = 0; i < 32; ++i) {
    ssid += char(EEPROM.read(i));  
  }
  for (int i = 32; i < 96; ++i) {
    pass += char(EEPROM.read(i));
  }
  if (isStringValid(ssid)) { return true } else { return false }
}

1 Ответ

0 голосов
/ 10 октября 2019

Вы пытаетесь перебрать символы и посмотреть, являются ли они действительными. Как насчет оценки, является ли char действительным, когда вы читаете из EEPROM?

bool isCharValid(char c)
{
  if ( c != '.' && !isalnum(c) )
    return false;
  return true;
} 

boolean restoreConfig() {
  EEPROM.begin(512);
  for (int i = 0; i < 32; ++i) {
    char c = char(EEPROM.read(i));
    if (!isCharValid(c)) {
      return false;  // if it is not valid, you don't need to keep reading.
    }
    ssid += c;       // append to ssid if it is valid.
  }
  for (int i = 32; i < 96; ++i) {
    pass += char(EEPROM.read(i));
  }
  return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...