首页 > 解决方案 > 如何检查从 eeprom 读取的 ssid/pass 是否良好

问题描述

在Arduino中,我正在从eeprom读取wifi ssid和密码,我想验证它们(应该是字符串)。基本上我需要了解我从内存中获取的内容是否好。

在我尝试的所有替代方案中,我都遇到了错误,可能我不太了解字符、字符数组和字符串。例如,如何使下面的代码工作?

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 }
}

标签: arduino

解决方案


您正在尝试遍历字符并查看它们是否有效。从 EEPROM 读取时评估 achar是否有效如何?

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;
}

推荐阅读