diff --git a/src/data_processor.cpp b/src/data_processor.cpp index 9b638b1..bfc23b1 100644 --- a/src/data_processor.cpp +++ b/src/data_processor.cpp @@ -150,18 +150,19 @@ void DataProcessor::flushToSD() { // Verificamos que los punteros existan Y que el archivo esté abierto if (_sd && _logFile && _logFile->isOpen()) { -// 1. Escribimos al BUFFER (RAM) - Esto es instantáneo (microsegundos) - _logFile->print(millis()); - _logFile->print(","); - _logFile->println(car.ect); + // 1. ESTRUCTURACIÓN EN RAM (El método snprintf) + // Reservamos 128 bytes de memoria temporal. + char buffer[128]; + + // Ensamblamos la cadena en la RAM. snprintf devuelve la longitud real de la cadena. + int len = snprintf(buffer, sizeof(buffer), "%lu,%d\n", millis(), car.ect); + + _logFile->write(buffer, len); // 2. SYNC CONTROLADO - // Solo obligamos a la tarjeta a "escribir de verdad" si ha pasado X tiempo. - // Esto evita detener el CAN cada 10ms. if (millis() - _last_sync_time > _sync_interval_ms) { - _logFile->sync(); // Aquí sí gastamos tiempo, pero solo 1 vez por segundo + _logFile->sync(); _last_sync_time = millis(); - // Serial.println("[SD] Sync realizado"); // Descomentar solo para debug } } -} +} \ No newline at end of file