Чтение имен файлов на SD-карте, возвращающих нечетные имена файлов

При попытке прочитать имена файлов с SD-карты некоторые из них возвращаются с ~1 и обрезают полное имя файла.

Initializing SD card...initialization done.
TEST.TXT        402
UNTITL~1        0
HELLOT~1        49
DATALOG.TXT     562288
ALONGN~1        0
done!

Есть ли способ получить полное имя каждого файла?

Код для этого взят отсюда: https://www.arduino.cc/en/Tutorial/Listfiles

, 👍1


2 ответа


Лучший ответ:

3

Так работает файловая система FAT.

На странице, на которую вы ссылаетесь, есть ссылка на страницу SDCardNotes.

Файловые системы FAT имеют ограничения в отношении соглашений об именах. Вы должны использовать формат 8.3, чтобы имена файлов выглядели как «NAME001.EXT», где «NAME001» — это строка из 8 или менее символов, а «EXT» — это расширение из 3 символов. Люди обычно используют расширения .TXT и .LOG. Можно использовать более короткое имя файла (например, mydata.txt или time.log), но нельзя использовать более длинные имена файлов.

Когда вы записывали файлы в файловую систему, вы работали в ОС, которая поддерживает более длинные имена файлов. Если имена файлов слишком длинные, автоматически создается имя 8.3 с удалением кусков символов и заменой их на ~.

,

1

На вашей SD-карте длинные имена файлов. Библиотека SD слишком примитивна, чтобы знать, что это такое.

Я бы предложил перейти на FatFS (вот одна из реализаций), в которой можно использовать длинные имена файлов.

,

Прикольно, не знал об этом., @Dave Newton

@DaveNewton Я не уверен, позволяет ли эта реализация использовать длинные имена файлов, но код, который она обертывает, определенно их поддерживает., @Majenko