|
Работа со списком файлов директории, с минимальными затратами ОЗУ |
|
|
|
Jul 17 2009, 10:47
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Привет! Думаю, как организовать функцию GUI (типа окна File Requester) со списком нужных файлов (длинные имена) текущей директории. К примеру, для выбора .mp3 файлов для последующего воспроизведения, или любого другого требуемого типа из большого количества различных представленных - думаю, пока что должна быть возможность работать с 250-тью файлами (вместе с субдиректориями) максимум. В окошке будет курсор, свободно перемещаемый по вертикальному списку.
Контроллер STM32 с 20к оперативы, поэтому затрачивать более 1к на нужды функции не вижу смысла.
Файловая система FatFS от Чана.
Пока остановился на таком методе: 1. Функцией f_readdir() последовательно вычитываем содержимое, индексы (порядковые номера) файлов с нужным расширением и субдиректорий сохраняем в таблице размером 250 байт. При этом остальные (не .mp3) файлы пропускаем, а индексы директорий записываем в начало таблицы, чтобы директории шли первыми. 2. Юзер, перемещая курсор GUI, фактически перемещает указатель на индекс файла в таблице. 3. Затем функцией dir_seek(индекс) устанавливаем указатель FatFS, и получаем имя файла через f_readdir().
Вроде как таким образом избегаем прямой работы с длинными именами. Хотя по третьему пункту не уверен, что сработает - не пробовал пока...
Что скажете, уважаемые?
ЗЫ: вообще, конечно, хотелось бы формировать список в алфавитном порядке, но не вижу способа реализовать это на контроллере без большого кол-ва оперативки...
|
|
|
|
|
 |
Сообщений в этой теме
sonycman Работа со списком файлов директории Jul 17 2009, 10:47 AHTOXA Поскольку юзер-интерфейс - штука неторопливая, то ... Jul 17 2009, 11:31 defunct Согласен с АНТОХА
Цитата(sonycman @ Jul 17 2... Jul 23 2009, 00:38 sonycman Цитата(defunct @ Jul 23 2009, 04:38) Согл... Jul 23 2009, 08:31  AHTOXA Цитата(sonycman @ Jul 23 2009, 14:31) Тол... Jul 23 2009, 09:07   sonycman Цитата(Dron_Gus @ Jul 23 2009, 13:03) Ну ... Jul 23 2009, 09:17 baralgin Можно отсортировать без буферов под имена вообще, ... Jul 23 2009, 08:18 Dron_Gus Вот тут есть небольшая статья со сравнениями произ... Jul 23 2009, 08:38 sonycman Цитата(Dron_Gus @ Jul 23 2009, 12:38) Вот... Jul 23 2009, 08:42 Rst7 ЦитатаА как можно сделать иначе?
Способов - масса... Jul 23 2009, 08:40 Rst7 ЦитатаНо не вижу другого способа, при отсутствии д... Jul 23 2009, 08:50 sonycman Цитата(Rst7 @ Jul 23 2009, 12:50) Не согл... Jul 23 2009, 08:55 Dron_Gus Ну покурите заодно и поразрядную сортировку из при... Jul 23 2009, 09:03 Rst7 ЦитатаСпасибо, буду "курить" бинарную со... Jul 23 2009, 09:09 Rst7 ЦитатаНу покурите заодно и поразрядную сортировку ... Jul 23 2009, 09:20 sonycman Цитата(Rst7 @ Jul 23 2009, 13:20) Не все.... Jul 23 2009, 09:30  zltigo Цитата(sonycman @ Jul 23 2009, 12:30) Точ... Jul 23 2009, 16:53 Dron_Gus Цитата(sonycman @ Jul 23 2009, 13:17) Хот... Jul 23 2009, 09:24 Rst7 ЦитатаОбьясните, плиз, чем не годится.
Слишком мн... Jul 23 2009, 09:29 Rst7 ЦитатаСпасибо, возьму этот вариант за основу!
... Jul 23 2009, 09:41 Dron_Gus Цитата(Rst7 @ Jul 23 2009, 13:29) Слишком... Jul 23 2009, 10:43 Rst7 ЦитатаМожно буферизировать по 5 букв из имени кажд... Jul 23 2009, 10:58 Dron_Gus Согласен. Было бы неплохо этот алгоритм "разв... Jul 23 2009, 11:13 Rst7 ЦитатаБыло бы неплохо этот алгоритм "разверну... Jul 23 2009, 16:40 Rst7 ЦитатаПополам, не самый эффективный вариант - дели... Jul 23 2009, 17:05 zltigo Цитата(Rst7 @ Jul 23 2009, 20:05) Для мак... Jul 23 2009, 17:16 Rst7 ЦитатаТрудностей никаких и нет, а массивы не тольк... Jul 23 2009, 17:38 Dron_Gus Цитата(Rst7 @ Jul 23 2009, 20:40) Если хо... Jul 24 2009, 05:17 sonycman В принципе, вместо имени файла можно юзать ID3 тэг... Jul 24 2009, 08:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|