我試圖使用標準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