Запись данных в Arduino EEPROM
Это продолжение этого поста. Запись данных в EEPROM на Arduino. Я только что попробовал использовать фрагменты в URL, но ничего не получилось. Пожалуйста, помогите мне исправить ошибку ниже.
write_to_eeprom.cpp:8:5: error: expected unqualified-id before '[' token
write_to_eeprom.cpp: In function 'void setup()':
write_to_eeprom.cpp:12:16: error: 'stringToWrite' was not declared in this scope
write_to_eeprom.cpp: In function 'void loop()':
write_to_eeprom.cpp:22:33: error: invalid conversion from 'uint8_t {aka unsigned char}' to 'char*' [-fpermissive]
write_to_eeprom.cpp: In function 'void EEPROM_write(void*, byte)':
write_to_eeprom.cpp:32:32: error: 'void*' is not a pointer-to-object type
Вот код
#include <EEPROM.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
char[] stringToWrite = "Test";
void setup() {
lcd.begin(16, 2);
delay(5000);
EEPROM_write(stringToWrite, strlen(stringToWrite));
}
void loop() {
delay(10000);
int addr = 0;
byte datasize = EEPROM.read(addr++);
char stringToRead[0x20]; // allocate enough space for the string here!
char * readLoc = stringToRead;
for (int i=0;i<datasize; i++) {
readLoc = EEPROM.read(addr++);
readLoc++;
}
}
// Function takes a void pointer to data, and how much to write (no other way to know)
// Could also take a starting address, and return the size of the reach chunk, to be more generic
void EEPROM_write(void * data, byte datasize) {
int addr = 0;
EEPROM.write(addr++, datasize);
for (int i=0; i<datasize; i++) {
EEPROM.write(addr++, data[i]);
}
}
1 ответ
Ну, вам нужно исправить свой код:
строка 8 - [] нужно перейти ПОСЛЕ строки stringToWrite, строка 12 - должно поправиться после исправления строки 8
строка 22 - нужно разыменовать readLoc. добавьте "*" перед ним.
строка 32 - ваш параметр "data" является указателем на void, который не имеет размера. Из-за этого вы не сможете использовать его как массив. Вы можете изменить объявление на:
void EEPROM_write (char * data, byte dasasize)
Это исправляет ошибки компилятора. Быстрый взгляд на семантику кода, кажется, делает то, что вы хотите. Удачи.