Чтение имен файлов на 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
@Kara, 👍1
2 ответа
Лучший ответ:
Так работает файловая система FAT.
На странице, на которую вы ссылаетесь, есть ссылка на страницу SDCardNotes.
Файловые системы FAT имеют ограничения в отношении соглашений об именах. Вы должны использовать формат 8.3, чтобы имена файлов выглядели как «NAME001.EXT», где «NAME001» — это строка из 8 или менее символов, а «EXT» — это расширение из 3 символов. Люди обычно используют расширения .TXT и .LOG. Можно использовать более короткое имя файла (например, mydata.txt или time.log), но нельзя использовать более длинные имена файлов.
Когда вы записывали файлы в файловую систему, вы работали в ОС, которая поддерживает более длинные имена файлов. Если имена файлов слишком длинные, автоматически создается имя 8.3 с удалением кусков символов и заменой их на ~
.
На вашей SD-карте длинные имена файлов. Библиотека SD слишком примитивна, чтобы знать, что это такое.
Я бы предложил перейти на FatFS (вот одна из реализаций), в которой можно использовать длинные имена файлов.
- Как увеличить скорость записи на SD-карту в Ардуино
- SD-карта не инициализируется
- Что означают эти контакты? Куда мне их подключить?
- Режимы открытия файлов на SD-карте Arduino добавление/перезапись
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Сделать CS (chip select) для работаты в SPI (для и SD карты и OLED)
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
Прикольно, не знал об этом., @Dave Newton
@DaveNewton Я не уверен, позволяет ли эта реализация использовать длинные имена файлов, но код, который она обертывает, определенно их поддерживает., @Majenko