ОБНОВИТЬ:
Там нет getfilename (), но есть функция name ()!
Я пытаюсь сделать простую программу для хранения всех имен файлов в массиве String, а затем показать их на ЖК-дисплее.
Код:
String* list(File root, int len) {
if (!root.isDirectory()) return NULL;
String files[50];
int i = 0;
while (true) {
File f = root.openNextFile();
if (i < 50) files[i] = f.getFilename();
f.close();
i++;
}
len = i;
root.close();
return files;
}
Код для отображения на ЖК-дисплее:
void displayToLCD(String* files, int len) {
lcd.clear();
lcd.home();
lcd.print("Files on SD:");
for (int i = 0; i < len; i++) {
lcd.setCursor(0, 1);
lcd.print(files[i]);
delay(1000);
}
lcd.clear();
lcd.home();
}
Но проблема в том, что класс File не имеет функции ‘getFilename ()’. Есть ли способ получить имя файла?
Пожалуйста помоги.
С наилучшими пожеланиями,
Mateiaru
Только что вспомнил, что на arduino.cc в разделе File, на примере openNextFile, они используют File.name ()! Так что нет getFilename ().
Mateiaru
Я бы порекомендовал вам посмотреть на мой MP3 FilePlayer.ino пример. Он выполняет то, что вы пытаетесь, но только через последовательный порт.
Кроме того, он не исчерпает память, так как не сохраняет имена файлов в массиве или памяти. Скорее отображает их и позволяет пользователю выберите номер. Это также может быть легко адаптировано к меню стрелок вверх / вниз для ЖК-дисплея.
Обратите внимание, что я использую SdFat. Он имеет больше функций и атрибутов, которые не публикуются в стандартном SD. вместе с file.getFilename ().