我有一个ESP32,使用Arduino IDE编程。在我的代码中,我有两个变量:sName
(字符串(和nScore
(双精度(。这对变量,需要写入EEPROM到高分命名空间中。到目前为止,打开名称空间并编写值是很容易的。。
但棘手的部分来了:名称空间highscore
有20个值:10个名称和10个分数。只有当值高于已经存在的值时,我才需要将其写入命名空间,并将其添加到高分表中的正确位置,从而移动所有其他值。
我该怎么做?目前,我正在考虑在启动时加载所有值,并将其存储在2个数组中。然后,每当数组中发生变化时,都要将其写下来。
但我不确定这样做是否恰当。
假设您希望最小化对EEPROM的写入次数,最好的方法是分配EEPROM的10个地址,每个高芯保持器一个,然后在EEPROM中有一个单独的变量来表示高芯的顺序。
eg:
ADD1: NameA
ADD2: NameB
ADD3: NameC
....
然后是
int ord = 231
这意味着1.姓名C2.姓名A3.名称B…
这样,如果有新玩家进入记分牌,只重写得分最低的玩家的地址(例如:order 3->NameB(,并重新排列ord
变量。
由于您有10个条目,您的ord
变量可能类似于7562931048,其中0将是最高得分手。
在任何情况下,你肯定必须在启动时(或稍后(将所有分数(可能只是数字(加载到ram中进行比较。