SD Правильная запись логов на флешку с проверкой

akimov_aleks
Offline
Зарегистрирован: 04.04.2013

привет всем не как не могу сделать правильную запись на флешку с проверкой. если вытощить флешку вовремя работы то код серовно думает что фаил есть и какимто чудом внего чтото пишет в пустоту... 

хотя по сути  myFile = SD.open("log.txt", FILE_WRITE); лож  и должен быть ERROR

 

 if (aleks == true)
  {
    myFile.close();
    myFile = SD.open("log.txt", FILE_WRITE);
    if (myFile) {
      myFile.print("Алексей Пришел : ");
      myFile.print(rtc.getDateStr());
      myFile.print(" : ");
      myFile.println(rtc.getTimeStr());
      myFile.close();
      lcd.setCursor(8, 4);
      lcd.print("OK");
      tone(7,700,500); 
    }
    else {
    Serial.println("error opening");
    lcd.setCursor(8, 4);
    lcd.print("ERROR");
    
      } 

 

maksim
Offline
Зарегистрирован: 12.02.2012
void SD_check()
{
  static uint32_t pre_millis = 0;
  if(millis()-pre_millis < 500) return; // 2 раза в секунду проверяем
  pre_millis = millis();
  myFile = SD.open("log.txt", FILE_READ);
  if(myFile.read() == -1) // Если файл не читается
  // if(base.available()) // или нечего читать
  {
    Serial.println("Card removed");
    delay(50);
    asm volatile ("jmp 0x0000"); // перезагружаемся
  }
  myFile.close();
}

В общем смысл в том, что открывайте и читаййте файл, если не читается, значит файла и/или карты нет.