【发布时间】:2021-09-09 18:13:06
【问题描述】:
我有一个使用 Arduino IDE 编程的 ESP32。
在我的代码中,我有 2 个变量:sName(字符串)和nScore(双精度)。
这对变量,需要写入 EEPROM 到 higscore 命名空间中。到目前为止,这很容易,打开命名空间并写入值..
但棘手的部分来了:命名空间 highscore 有 20 个值:10 个名称和 10 个分数。只有当值高于已经存在的值时,我才需要将值写入命名空间,并将其添加到高分表中的正确位置,移动所有其他值。
我该怎么做? 目前我正在考虑在启动时加载所有值并将其存储在 2 个数组中。然后每当数组中的某些内容发生更改时,将其写下来。
但我不确定这样做是否正确。
【问题讨论】:
-
只是一个提示 OP,在 ESP32 上你有 SPIFFS 和类似 ArduinoJson 的资源。 SPIFFS 可让您将 Flash 的一部分视为文件系统,因此您只需执行
SPIFFS.open("highscore.json"),而 ArduinoJson 可让您以易于理解的格式表示数据。用于在嵌入式处理器的闪存上保存基本类型的 Json 通常是一种浪费,但听起来这不是每毫秒都会更改的数据,而且大多数 ESP32 项目都有 ton 未使用的资源剩余到 RAM。 -
(至少我推荐SPIFFS/LittleFS over EEPROM,它在ESP32上使用相同的闪存,但界面更简单)
标签: esp32 arduino-ide eeprom