乐鑫技术交流
直播中

ejlwj

8年用户 898经验值
擅长:处理器/DSP
私信 关注
[问答]

如何将详细信息保存在文本文件而不是EEPROM?

我目前正在研究 DNSServer 提供的 CaptivePortalAdvanced 示例。这提供了一个名为“凭据”的草图,其中凭据保存在 EEPROM 中。但我想将详细信息保存在文本文件中,所以我决定为此使用 FS.h。我为此开发了一个代码,但它没有打印出必要的细节,就像在原始代码中那样。此外,当我打印它时,串行监视器显示“无法打开文件进行读取”。任何关于我做错了什么的指示或任何关于我应该做什么的建议都将不胜感激!
这是提供的原始代码,详细信息保存在 EEPROM 中:
代码:全选void loadCredentials() {
  EEPROM.begin(512);
  EEPROM.get(0, ssid);
  EEPROM.get(0 + sizeof(ssid), password);
  char ok[2 + 1];
  EEPROM.get(0 + sizeof(ssid) + sizeof(password), ok);
  EEPROM.end();
  if (String(ok) != String("OK")) {
    ssid[0] = 0;
    password[0] = 0;
  }
  Serial.println("Recovered credentials:");
  Serial.println(ssid);
  Serial.println(strlen(password) > 0 ? "********" : "");
}

void saveCredentials() {
  EEPROM.begin(512);
  EEPROM.put(0, ssid);
  EEPROM.put(0 + sizeof(ssid), password);
  char ok[2 + 1] = "OK";
  EEPROM.put(0 + sizeof(ssid) + sizeof(password), ok);
  EEPROM.commit();
  EEPROM.end();
}


这是我开发的用于将详细信息保存在文本文件中的代码:
代码:全选void saveCredentials() {
  bool success = SPIFFS.begin();
  if (!success) {
    Serial.println("Error in openning the file");
    return;
  }
  File fileWrite = SPIFFS.open("/file.txt", "w");
  if (!fileWrite) {
    Serial.println("Failed to open file for Writing");
    return;
  }

  fileWrite.println(ssid);
  fileWrite.println(password);
  fileWrite.close();

}


void loadCredentials() {
  bool success = SPIFFS.begin();
  if (!success) {
    Serial.println("Error in openning the file to read");
    return;
  }
  File fileRead = SPIFFS.open("/file.txt", "r");
  if (!fileRead) {
    Serial.println("Failed to open file for reading");
    return;
  }
  Serial.write(fileRead.read());
  Serial.println(fileRead.read());
  fileRead.close();
}


我正在使用的代码在此处给出:DNSServer---esp32/CaptivePortalAdvanced.ino at master · zhouhan0126/DNSServer---esp32 · GitHub 1
我只更改了上面提到的 credentials.ino 草图。

更多回帖

发帖
×
20
完善资料,
赚取积分