我试图使用标准Arduino EEPROM-Library例程EEPROM.put()将所有值从4个结构保存到ATMega328P EEPROM中,并通过EEPROM.get ()。如何将我的value_table中的所有值传递给这些函数?这是我的数据如何。如何将指针阵列中的值保存到EEPROM中的结构中
typedef struct EXAMPLE {
uint8_t part1[7][2];
uint8_t part2[3];
} *ptr[5];
EXAMPLE VALUE_1 = {{
{1, 8},
{2, 9},
{3, 10},
{4, 11},
{5, 12},
{6, 13},
{7, 14}
},
{15, 16, 17}
};
在指针数组中组合了四个版本VALUE_1到VALUE_4。
struct EXAMPLE *value_table[] = {&VALUE_1, &VALUE_2, &VALUE_3, &VALUE_4};
这是我想到的,但收益率错误的结果。
EEPROM.put(0, &value_table); // 0 is first byte of EEPROM
EEPROM.get(0, value_table);
我想存储的是位于VALUE_1 - VALUE_4中的值,以使它们持久。
我非常感谢每一个提示!
指针可能会杀死你。如果我正确地阅读,您已经告诉'put'写入4个指针,而不是指针处的数据。 – user4581301
是的,这可能是正确的。但是,必须有一种方法来获得价值观并将它们传递给'put'?像EEPROM.put(0,VALUE_1)这样独立写入和读取这些元素可以工作,但这不是正确的... – user3750030
@ user3750030:不存在,它存储你给它的数据。如果你给它4个指针,它将存储4个指针(并且没有数据)。它不知道'value_table'的内部结构是什么,它只是获得'sizeof(value_table)'并将很多字节存储到EEPROM中。实际上,现在我强烈怀疑您的原始代码仅存储单个VALUE_1指针,而不是其他三个指针。很难从那些愚蠢的文档中看出来。将它们分开存储的问题有哪些?你仍然可以在指针数组上做一个'for'(查看我的代码,它尖叫着“我”替换)。 – Ped7g