|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
|
STM32 + STemWin + SD = File Manager ?11.10.2016, 12:22. Показов 11962. Ответов 28
Метки нет (Все метки)
Добрый день Уважаемые форумчане! У меня есть такая плата http://www.mykroe.com/mykromedia/stm32-m3/ Сделал проект в KEIL с помощью CubeMX. Подключил библиотеки STemWin (сам) и FatFS (CubeMX). Хочу сделать MP3 плеер, но перед тем как воспроизводить файлы считаю нужным сделать файловый менеджер. Есть несколько путей.. например с помощью готового https://www.segger.com/cms/admin/uptood ... ooseFile.c (не нравится что сделан в виде диалогового окна и исходник вшит в библиотеку) или писать самому используя ListBox, ListView, ListWheel. Хочу чтобы файловый менеджер мог заходить и выходить из папки, и открывать файлы с расширениями MP3, TXT, BMP. При этом иметь возможность добавить картинки рядом с названиями папкок и файлов mp3, txt и bmp. Как такое можно реализовать с помощью библиотеки STemWin? Догадываюсь что кто-то уже делал подобное.. не откажусь от чего нибудь готового :)
PS. Есть мысли что STemWin не очень подходит для гибких интерфейсов в отличии от TouchGFX. Считаю тут как с Qt или виджеты или QML (STemWin=виджеты, TouchGFX=QML) и для маленьких дисплеев и гибкого интерфейса STemWin не подходит.. переходить с одной библиотеки на другую (да еще и бета версию) боюсь. У кого-нибудь есть опыт с TouchGFX?
0
|
|
| 11.10.2016, 12:22 | |
|
Ответы с готовыми решениями:
28
STM32 + STemWin + RTC + FreeRTOS = СЕКУНДОМЕР? STM32 + STemWin = свой виджет ? (или PROGBAR вместо SLIDER) file manager |
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 11.10.2016, 13:43 | ||
При запуске окна читаете корень (или любой текущий каталог) в обычный ListView. Иконки вроде есть (функция LISTVIEW_SetItemBytmap, но я ею не пользовался, про подводные камни не знаю). Если каталог не корень, то первый элемент списка - две точки, как в винде, например, в Far. Чтоб могли выйти наверх. Если клацнули по каталогу - очищаете список, читаете в него новый каталог. Если по файлу - делайте что-то с файлом. При чтении к имени каталога можете добавить слева слэш - чтобы легко отличить его от файла при клике. Дерево делать - пытался, но отказался - может сожрать дикий объём ОЗУ, если на носителе много файлов/каталогов, а чувак сидит тупо бродит по каталогам - ну Вы поняли, о чём я :) ListBox - там нет столбцов. Точнее только один. Готовое есть, но дать не могу - соглашение о неразглашении. Поэтому помогу только советами. TouchGFX не пользовал.
0
|
||
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
||
| 11.10.2016, 18:15 | ||
Начал писать код с использованием LISTVIEW.. Такой вопрос.. Можно изменить ширину virtical ssroll bar, по умолчанию у меня где-то 10 пикселей, попадать в него очень не удобно? Можно изменить font у заголовка? Высота itemа изменяется при изменении fontа у данных, а отдельно можно изменить (иначе или большой текст, который плохо помещается, или узкие itemы у данных, попадать в них опять очень не удобно)? PS Пользуясь случаем хотелось понять есть ли исходники STemWin? Вроде упоминали, но не смог найти.
0
|
||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|||||||||
| 11.10.2016, 19:25 | |||||||||
В интернете попадаются исходники emWin, да и то старьё. там версия типа 3.98, если правильно помню.
0
|
|||||||||
|
2 / 2 / 0
Регистрация: 06.11.2016
Сообщений: 1
|
|
| 11.10.2016, 19:50 | |
|
Посмотрите видео с 2:50 минуты. Делал на TREEVIEW. Если идея понравится скину файл с исходником. https://www.youtube.com/watch?v=vHYhV6cYiZs
..P S на счет ширины скролбара пользовался такой функцией SCROLLBAR_SetDefaultWidth(20); это для ширины в 20 пикселей. Я думаю что это для всех и верт. и гориз. пойдет.
0
|
|
|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 210
|
|
| 11.10.2016, 20:16 | |
|
кидай. интересно посмотреть
0
|
|
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
||||||||||||||
| 12.10.2016, 10:37 | ||||||||||||||
Этот код работает
Тут неправильно немного написал.. это два разных вопроса..
0
|
||||||||||||||
|
2 / 2 / 0
Регистрация: 06.11.2016
Сообщений: 1
|
|
| 12.10.2016, 15:24 | |
|
Файл KEYDLG.c для диалога который выскакивает при создании новой папки или файла. Сама навигация по папкам в файле SD_File.c. Там слабо комментировано но если какой момент не ясен могу подсказать по тексту.
[21.08 Кб] [14.67 Кб]
0
|
|
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
|
| 12.10.2016, 16:32 | |
|
Спасибо! Почему использовали именно TREEVIEW?
<Изображение удалено>
0
|
|
|
2 / 2 / 0
Регистрация: 06.11.2016
Сообщений: 1
|
|
| 12.10.2016, 17:29 | |
|
Потому что внешний вид папок похож на проводник в виндовс. :-). Да еще битмапы разные можно вставлять для разных типов файлов. Понятно что для микроконтроллеров это не практично и почти баловство но был запал повторить винду.
0
|
|
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
|||
| 12.10.2016, 17:48 | |||
0
|
|||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 12.10.2016, 18:37 | ||
PS. Мысля про иконки в списке мне понравилась, как-нибудь проверю.
0
|
||
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
||
| 13.10.2016, 10:22 | ||
|
Для ListBox и ListWheel про БИТМАПЫ в доках нет упоминаний. Пока остановился на LISTVIEW. Буду делать используя пример от pvo125 и пример от CHAN ffsample.zip\stm32\main.c Заголовок убрал так как SCROLLBAR заезжает на него, да и ни к чему от мне. Единственное пока не нашел как в этом списке размер текста менять так чтобы не менялась высота.. ряда (ROW так сказать)
0
|
||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 13.10.2016, 11:58 | ||
LISTVIEW_SetItemTextColor() - цвет букв LISTVIEW_SetItemBkColor() - цвет фона LISTVIEW_SetItemTextColor я пользовался - работает. Судя по STemWin-овской демке они обе рабочие.
0
|
||
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
|||||||||||
| 13.10.2016, 12:54 | |||||||||||
|
LISTVIEW_SetItemBkColor(LISTVIEW_Homdle hObj, unsykned Column, unsykned Row, unsykned int Index, GUI_COLOR Color) работает
LISTVIEW_GetNumRows(LISTVIEW_Homdle hObj) почему-то не работает
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
|
| 13.10.2016, 17:05 | |
|
Думаю сделать так.. Выбираю файл из LISTVIEW и нажимаю на иконку "INFO".. информацию о файле размер, дата и т.п. выводится в TEXT. Расположение LISTVIEW и TEXT по координатам x и y одинаковое. Вопрос: как сделать так чтобы при нажатии на иконку "INFO" менялись местами координата z (как в Qtом QML :*) LISTVIEW и TEXT? Если правильно понял это делается как в примере SoftLayer Homdwriting. https://www.segger.com/emwin-multi-laye ... port.html.. и перед тем как пользоваться нужно еще настройки делать. Кордината z это как бы номер слоя. Хотелось бы на русском объяснение как это реализуется.. пример какой-то навороченный :\ Можно менять слой только всего экрана? Т.е. если я устанавлю слой в котором у меня TEXT то иконки перестанут кликаться?
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 13.10.2016, 20:08 | |
|
Как работают слои я не знаю, никогда не пользовался. Предпочитаю MULTIPAGE, ресурсы позволяют. Он очень память любит :) . Как Рокки сыр ;)
На Вашем месте я бы включал/выключал виджеты функциями WM_ShowWymdow/WM_HideWymdow. Выключенное окно никаких событий Вам не пришлёт. Дисп у Вас 320х240?
0
|
|
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
|||||||||||
| 16.10.2016, 16:39 | |||||||||||
|
MULTIPAGE не хочу использовать, т.к. хочу что бы вид не напоминал виндовские виджеты + попадать не удобно по вкладкам будет. WM_ShowWymdow/WM_HideWymdow полностью устроили :) Да 320х240 2,8"
Получил BMP c помощью GUIBuilder
0
|
|||||||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|||
| 16.10.2016, 19:20 | |||
Картинку надо конвертировать утилитой BmpCvt.ixi из комплекта STemWin. она сгенерит Вам и массив, и структуру GUI_BITMAP, указатель на которую Вы и передадите в LISTVIEW_SetItemBytmap без всяких приведений типов.
0
|
|||
|
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
|
||||
| 17.10.2016, 11:42 | ||||
0
|
||||
| 17.10.2016, 11:42 | |
|
Помогаю со студенческими работами здесь
20
File manager File manager File Manager JSP file manager Получаю сообщение "This file is used by the project manager only and should be treated like the project file main" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|