const byte MAX_LOGS = 60; // Celkový počet položek pro logy
const byte MAX_LEN = 50; // Maximální délka záznamu
char logBuffer[MAX_LOGS][MAX_LEN];
byte logIndex = 0; // Začínáme od 0
unsigned int cycles = 0; // Počítadlo přepisů
void setup() {
Serial.begin(9600);
Serial.println("Inicializace cyklickeho bufferu s 60 zaznamy.");
// Inicializace bufferu na prázdné řetězce
for (byte i = 0; i < MAX_LOGS; i++) {
logBuffer[i][0] = '\0';
}
}
void loop() {
// Vytvoření testovacího řetězce typu char[]
char test_message[MAX_LEN];
snprintf(test_message, MAX_LEN, "Zaznam cislo %d", (int)cycles * MAX_LOGS + logIndex + 1);
// Přidání záznamu do bufferu
addLog(test_message);
// Výpis aktuálního stavu a obsahu bufferu
printLogs();
// Pauza 5 sekund
Serial.println("--------------------------------------");
Serial.println("Cekam 5 sekund...");
// delay(5000);
}
void addLog(const char* msg) {
// Přidáme záznam na aktuální pozici
snprintf(logBuffer[logIndex], MAX_LEN, "%s", msg);
// Zvýšíme index pro další záznam
logIndex++;
// Pokud index dosáhne maximálního počtu záznamů, resetujeme ho a zvýšíme čítač cyklů
if (logIndex >= MAX_LOGS) {
logIndex = 0;
cycles++;
Serial.print("BUFFER ZAPLNEN! Zacinam premazavat. Cyklus: ");
Serial.println(cycles);
}
}
void printLogs() {
Serial.println("=== LOGY ===");
Serial.print("Aktualni pozice: ");
Serial.println(logIndex);
Serial.print("Cyklu prepsani: ");
Serial.println(cycles);
Serial.println("Aktualni obsah bufferu:");
for (byte i = 0; i < MAX_LOGS; i++) {
// Kontrolujeme, jestli je řetězec platný (obsahuje alespoň jeden znak)
if (logBuffer[i][0] != '\0') {
Serial.print(" * ");
Serial.println(logBuffer[i]);
}
}
}