c++ - EEPROM ESP8266 - 倒问号

标签 c++ arduino esp8266 eeprom

我卡在这里了。我正在尝试使用我的修改版本 this 将板配置保存/加载到 ESP8266 中的 EEPROM示例。

这是我的实际代码:

char ssid[32] = "";
char password[32] = "";
char device_type[1] = "";
char device_name[32] = "";

/** Load WLAN credentials from EEPROM */
void loadBoardConfig()
{

  EEPROM.begin(512);

  int addr = 0;
  EEPROM.get(0, ssid);

  addr += sizeof(ssid);
  EEPROM.get(addr, password);

  addr += sizeof(password);
  EEPROM.get(addr, device_type);

  addr += sizeof(device_type);
  EEPROM.get(addr, device_name);

  addr += sizeof(device_name);

  char ok[2 + 1];
  EEPROM.get(addr, ok);

  EEPROM.end();

  if (String(ok) != String("OK"))
  {
    ssid[0] = 0;
    password[0] = 0;
    device_type[0] = 0;
    device_name[0] = 0;
  }
}

/** Store Board Config to EEPROM */
void saveBoardConfig()
{

  EEPROM.begin(512);

  int addr = 0;
  EEPROM.put(addr, ssid);

  addr += sizeof(ssid);
  EEPROM.put(addr, password);

  addr += sizeof(password);
  EEPROM.put(addr, device_type);

  addr += sizeof(device_type);
  EEPROM.put(addr, device_name);

  addr += sizeof(device_name);
  char ok[2 + 1] = "OK";
  EEPROM.put(addr, ok);

  EEPROM.commit();
  EEPROM.end();
}

我意识到它没有正确连接到 WiFi,所以我添加了这段代码来测试:

Serial.print("EEPROM CONFIG: [{ SSID: ");
Serial.printf("%c",ssid);
Serial.print(" },\n{ Password: ");
Serial.print(password);
Serial.print(" },\n{ Device Type: ");
Serial.print(device_type);
Serial.print(" },\n{ Device Name: ");
Serial.print(device_name);
Serial.println(" }]");
Serial.print("STATUS: ");
Serial.println(ok);

这是我在串行监视器中得到的结果:

EEPROM CONFIG: [{ SSID: ⸮ },
{ Password: ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮ },
{ Device Type: ⸮ },
{ Device Name: ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮ }]
STATUS: ⸮⸮⸮?x⸮ @⸮⸮⸮?

知道为什么会这样吗?

最佳答案

我发现了问题。代码没问题,但 ESP8266 没有实际的 EEPROM。相反,它被模拟并保存在闪存中,我的设置是删除所有闪存内容。我刚刚切换到“Only Sketch”并且它起作用了! 谢谢!

关于c++ - EEPROM ESP8266 - 倒问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53047877/

相关文章:

arrays - Arduino - 高效地迭代 C 数组

php - 为什么ESP8266加载php URL时报DNS失败?

c++ - std::priority_queue<> 什么时候进行 self 排序?

c++ - Haskell Thrift 库在性能测试中比 C++ 慢 300 倍

arduino - RFID RC522 是否能够读取 NFC 标签?

Lua - 零值错误

tcp - 如何使 AT 命令以编程方式在 arduino 中为 ESP8266 wifi 模块工作

c++ - 函数类似于strcat()的问题

c++ - OpenCV 2质心

c++ - 为什么我的串行通过串行监视器在 Arduino IDE 上打印两次?