Я программирую ESP32 в платформе Arduino. Для моего приложения мне нужно создать буфер, в котором будет храниться информация как из настоящего, так и из последнего обращения к нему. Вот то, что я пытаюсь сделать.
//first buffer
char buffer1[4];
//second buffer
char buffer2[8];
void setup {
//setup
}
//buffer1 values will change with each iteration of loop from external inputs
//buffer2 must store most recent values of buffer1 plus values of buffer1 from when loop last ran
for example:
**loop first iteration**
void loop {
buffer1[0] = {1};
buffer1[1] = {2};
buffer1[2] = {3};
buffer1[3] = {1};
saveold(); //this is the function I'm trying to implement to save values to buffer2 in an element-wise way
}
//value of buffer2 should now be: buffer2 = {1,2,3,1,0,0,0,0}
**loop second iteration**
void loop {
buffer1[0] = {2};
buffer1[1] = {3};
buffer1[2] = {4};
buffer1[3] = {2};
saveold();
}
//value of buffer2 should now be: buffer2 = {2,3,4,2,1,2,3,1}
Из того, что я смог понять с помощью поиска в Интернете, функция «saveold», которую я пытаюсь сделать, должна реализовывать некоторую форму memmove для них. операции с массивами
Я пытался собрать его вместе, но я всегда перезаписываю значение buffer2 вместо того, чтобы как-то сдвигать новые значения, сохраняя при этом старые
Это все, что у меня есть получил:
void saveold() {
memmove(&buffer2[0], &buffer1[0], (sizeof(buffer1[0]) * 4));
}
Насколько я понимаю, это копирует buffer1, начиная с позиции индекса 0 в буфер2, начиная с позиции индекса 0, для 4 байтов (где 1 символ = 1 байт).
Информатика не является моим задним фоном, поэтому, возможно, есть какое-то фундаментальное решение или стратегия, которую я упускаю. Любые указатели будут оценены.