我正在尝试将封装到对象中的某些数据存储在ESP32的闪存中。
用 playerID nameFirst nameLast bats throws yearID stint teamID lgID G AB R H X2B X3B HR RBI SB CS BB SO IBB
81955 rolliji01 Jimmy Rollins B R 2007 1 PHI NL 162 716 139 212 38 20 30 94 41 6 49 85 5
103358 wilsowi02 Willie Wilson B R 1980 1 KCA AL 161 705 133 230 28 15 3 49 79 10 28 81 3
93082 suzukic01 Ichiro Suzuki L R 2004 1 SEA AL 161 704 101 262 24 5 8 60 36 11 49 63 19
83973 samueju01 Juan Samuel R R 1984 1 PHI NL 160 701 105 191 36 19 15 69 72 15 28 168 2
15201 cashda01 Dave Cash R R 1975 1 PHI NL 162 699 111 213 40 3 4 57 13 6 56 34 5
75531 pierrju01 Juan Pierre L L 2006 1 CHN NL 162 699 87 204 32 13 3 40 58 20 32 38 0
HBP SH SF GIDP average
81955 7 0 6 11 0.2960894
103358 6 5 1 4 0.3262411
93082 4 2 3 6 0.3721591
83973 7 0 1 6 0.2724679
15201 4 0 7 8 0.3047210
75531 8 10 1 6 0.2918455
将对象写入内存似乎不错,但是我不知道如何读取它。
我尝试执行此操作的方法不起作用...
putBytes
预先感谢您的任何想法!
答案 0 :(得分:0)
就像“首选项”(https://github.com/espressif/arduino-esp32/blob/master/libraries/Preferences/examples/Prefs2Struct/Prefs2Struct.ino)的示例用法一样,在转换为结构之前,需要将字节读入缓冲区。
在您的情况下,您声明了缓冲区,但从未使用过。由于您知道数组的确切大小,因此应该可以将其直接从buffer
复制到object_
。
char buffer[schLen]; // prepare a buffer for the data
eeprom.getBytes("someObject", buffer, schLen);
memcpy(object_, buffer, schLen);
答案 1 :(得分:0)
感谢您的帮助!工作代码:
#include <Preferences.h>
Preferences eeprom;
typedef struct {
long var1 = -1;
long var2 = -1;
long var3 = 0;
byte var4 = 0;
} someObject;
someObject object_[4][24];
someObject object_1_[4][24];
void setup() {
Serial.begin(115200);
eeprom.begin("Settings", false);
object_[0][0].var1 = 25889;
object_[0][0].var2 = 25890;
object_[0][0].var3 = 25891;
object_[1][2].var1 = 25892;
object_[1][2].var2 = 25893;
object_[1][2].var3 = 25894;
eeprom.putBytes("someObject", &object_, sizeof(object_));
Serial.print("sizeof(object_) = "); Serial.println(String(sizeof(object_)));
size_t schLen = eeprom.getBytes("someObject", NULL, NULL);
char buffer[schLen]; // prepare a buffer for the data
eeprom.getBytes("someObject", buffer, schLen);
memcpy(object_1_, buffer, schLen);
Serial.print("sizeof(someObject) = "); Serial.println(String(schLen));
Serial.println("--------**********************************");
Serial.println(String(object_[0][0].var1));
Serial.println(String(object_[0][0].var2));
Serial.println(String(object_[0][0].var3));
Serial.println("--------");
Serial.println(String(object_1_[1][2].var1));
Serial.println(String(object_1_[1][2].var2));
Serial.println(String(object_1_[1][2].var3));
Serial.println("===========================================");
Serial.println(buffer);
}
void loop() {}