arduino - 如何检查从 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 }
}
解决方案
您正在尝试遍历字符并查看它们是否有效。从 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;
}
推荐阅读
- python - FastAPI 单参数正文导致 Pydantic 验证错误
- powershell - 如何在powershell的任务调度程序中设置触发器“连接到用户会话”?
- sql - 使用 SQL Server 查找从特定字符到下一个空格字符的子字符串
- python - 交换某些行中的列
- python - Mininet 不通过路由器 ping
- vb.net - MouseHover 事件在 VB.net 中运行慢一毫秒
- python - TypeError:并非所有参数都在字符串格式化期间转换(Python 3)(字符串)
- c++ - 如何将值存储在二维数组中?
- nlp - 乔姆斯基层次结构——真实语言的例子
- php - 获取附加到 WooCommerce 中产品的所有“活动”属性分类法?