Arduino SD подсчитывает файлы и открывает их последним, как это сделать?

Я пытаюсь подсчитать файлы. У меня есть один скрытый файл из Windows10, поэтому я делаю "-1", но я хочу открыть последний файл и не могу понять, как, любая помощь? Пожалуйста, Спасибо

#include <SD.h>
int entryCount = 0;
File root;
int total = 0;
int Lfile = 0;
void setup()
{
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  SD.begin(4);
  root = SD.open("/");
  printDirectory(root, 0);
  root.close();
  Serial.println();
  Serial.print(total-1);
  Lfile = total-1;

  File dataFile = SD.open(Lfile);
  // если файл доступен, пишем в него:
  if (dataFile) {
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    dataFile.close();
  }
  // если файл не открыт, появится сообщение об ошибке:
  else {
    Serial.println();
    Serial.println("error opening last file");
  }
}

void loop()
{
  // после завершения установки ничего не происходит.
}

void printDirectory(File dir, int numTabs)
{
  while (true)
  {
    File entry = dir.openNextFile();
    if (! entry)
    {
      if (numTabs == 0)
      return;
    }
    for (uint8_t i = 0; i < numTabs; i++)
      Serial.print('\t');
    Serial.println(entry.name());
    total = entryCount;

    Serial.print(entryCount++);

    Serial.print('\t');

    entry.close();


  }
}

, 👍1

Обсуждение

что значит "последний файл"?, @jsotola

SD карта имеет файлы log01.txt, log02.txt, и т.д. Последний файл-это последний файл, который был создан, @Egauss Egauss


1 ответ


1

Рассмотрите возможность использования метода exist (), найденного в библиотеке SD.h, которую вы уже включили в свою программу. Предполагая, что вы создадите не более 99 файлов, а последний созданный файл будет иметь наибольшее 2-значное значение в своем имени, проверьте наличие файла log99.txt. Если не найдено, уменьшите 2-значное число и проверьте наличие файла log98.txt. Повторяйте этот процесс до тех пор, пока не найдете самый новый созданный файл.

,