STM32 разработка GUI

Кто любит RISC в жизни, заходим, не стесняемся.
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

STM32 разработка GUI

Сообщение Foxhound »

Доброго дня!
Вопрос больше теоретический, наверное. В плане хобби собираю много разнообразных девайсов. С недавних пор перешёл с AVR на STM32.
Традиционно возникает вопрос, как организовывать взаимодействие с пользователем. Традиционно делал это с помощью LCD (скажем 16x04) и энкодера. Удавалось сделать какое ни какое меню.
Ну и собственно возник вопрос более продвинутого способа взаимодействия с пользователем, благо TFT дисплеев с touch screen сейчас масса.
Вот только вопрос как интерфейс на этом дисплее организовывать? Не рисовать же все кнопочки и менюшки самостоятельно.
STM и google подсказали что можно использовать touchGFX. Купил отладочную плату stm32f469i-disco попробовал красиво и нарядно, но….
  • 1. Работает только с достаточно продвинутыми чипами, которые в основном BGA и в домашних условиях плату на такие не сделаешь
    2. Софт touchGFX designer только под винду…. А мне уж очень не хотелось ещё и её в хозяйстве заводить.
В связи с этим вопрос, а кто как делает пользовательский интерфейс на TFT дисплеях?
В какую сторону копать?
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 разработка GUI

Сообщение Eddy_Em »

Нет, как раз-таки единственный правильный путь — рисовать все самостоятельно. Потому что даже такие совсем вроде оптимизированные библиотеки, как nuklear, все равно сожрут прилично флеша.
А свой родной код, который заточен строго под одну задачу, вряд ли больше пяти килобайт съест.
P.S. Я уже больше 10 лет под МК что-то разрабатываю. Единственный раз, когда нужен был "интерфейс" — когда я сваял простую железяку для измерения температуры, прислюнил экранчик по SPI и выводил себе буковки. Еще делал отображение данных старт/финиш на светодиодной панели. Но чтобы рисовать "окошки" и "менюшки"… Ну, не знаю, зачем это. Можно же всегда по терминалу подключиться (хоть блютус сделать) и все нужные параметры настроить.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

Ну спорный вопрос....
Последнее поделка - блок управляющий ванной для травления печатных плат. Управляет подогревом и компрессором для подачи воздуха.
Соответственно через интерфейс можно управлять температурой, которая поддерживается и интенсивностью подачи воздуха.
Управляется все с помощью одного энкодера.

Наверное такой интерфейс можно самому нарисовать, но только времени на это уйдёт уйма.
Поэтому я за какие ни будь библиотеки. Вот только какие?
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 разработка GUI

Сообщение Eddy_Em »

Для блока управления ванной достаточно четырехразрядного семисегментного индикатора. Зачем там TFT?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 разработка GUI

Сообщение COKPOWEHEU »

А зачем для такой задачи навороченный интерфейс? Судя по описанию там пары семисегментников хватит. Ну и переменные резисторы наверное вместо энкодера.
Хотя если делать на продажу, где нужна не функциональность, а дешевизна и внешний вид. Там и блютус с управлением с телефона замутить можно, и подсветку ванночки снизу (никого не волнует что хлорное железо почти непрозрачное) мерзкими синими диодами. Или нет, ЛГБТ-подсветкой! Все как маркетологи любят.
Реклама
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4008686#p4008686"]А зачем для такой задачи навороченный интерфейс? Судя по описанию там пары семисегментников хватит. Ну и переменные резисторы наверное вместо энкодера.[/uquote]

Не в этом сейчас вопрос. В моем понимание сейчас реализован минимально убогий интерфейс.
1 строка: Средняя текущая температура раствора. Выбрав строку энкодером можно посмотреть температуру с каждого датчика
2 строка: Целевая температура (к которой стремимся), опять же выбрав строку экодером ее можно поменять
3 строка: Текущая мощность компрессора. Опять же экодером ее можно поменять
4 строка: Пункт меню стар/стоп и время работы если устройство запущено.

Итого один дисплей и один эккодер.
В случае с TFT touch screen можно было бы просто обойтись дисплеем.

Изображение
Дисплей к сожалению плохо видно, но если будет интересно, то вечером сфоткаю нормально.

И повторюсь вопрос не в том нужен или нет TFT дисплей. Тут я для себя уже все решил. Нужен.
Нет смысла отрицать прогресс.

Вопрос в том как с минимальными усилиями делать интерфейсы. Что бы можно было сосредоточиться на прикладной части устройства, а не на борьбе с низкоуровневым рисованием на дисплее.
Реклама
jcxz
Мудрый кот
Сообщения: 1725
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32 разработка GUI

Сообщение jcxz »

[uquote="Foxhound",url="/forum/viewtopic.php?p=4008667#p4008667"]Вот только вопрос как интерфейс на этом дисплее организовывать? Не рисовать же все кнопочки и менюшки самостоятельно.[/uquote]Да как угодно - как удобнее. Хоть в VisualStudio. Рисуете в VS диалог со всеми кнопочками и пр. требухой. А потом забираете от него .rc-файл (описывающий нарисованное) к себе в проект. И в программе рисуете по этому файлу.

[uquote="Foxhound",url="/forum/viewtopic.php?p=4008667#p4008667"]1. Работает только с достаточно продвинутыми чипами, которые в основном BGA и в домашних условиях плату на такие не сделаешь[/uquote]"Смешались в кучу люди кони..."
Никакой связи рисования GUI-интерфейса и мощности чипа нет. А тем более с типом корпуса. Да хоть на самом дохлом МК можно рисовать.
1. Разработчик рисует интерфейс на ПК, сохраняя результат (.rc-файл с координатами контролов).
2. А уже программа на МК рисует этот интерфейс по данным из этого .rc-файла с помощью своего графического API либо в видеопамять напрямую либо в ОЗУ МК с последующей отсылкой массива пикселей в видеопамять (либо ещё как). Графическое API в МК должно уметь отрисовывать графические примитивы: прямые, прямоугольники (закрашенные и незакрашенные), эллипсы, иногда - треугольники, шрифты разного размера и стиля. Обычно этого набора достаточно. Из этих примитивов уже строится любой контрол GUI.

Ваш вопрос непонятно о чём? О 1-м или о 2-м?
Если 1-е - любой инструмент типа VS и т.п.
Если 2-е - лучше написать свою реализацию графической библиотеки и с помощью её рисовать контролы GUI. Хотя и готовых их полно, но тут уже возможно будет привязка к чипу и к конкретной структуре видеосистемы.
Последний раз редактировалось jcxz Пт апр 02, 2021 13:13:37, всего редактировалось 1 раз.
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: STM32 разработка GUI

Сообщение Sergi »

Вот сам написал однажды объект "кнопка" на подобие виндовой и не заморачиваюсь с низкоуровневым рисованием на дисплее :)) .
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

[uquote="Sergi",url="/forum/viewtopic.php?p=4008709#p4008709"]Вот сам написал однажды объект "кнопка" на подобие виндовой и не заморачиваюсь с низкоуровневым рисованием на дисплее :)) .[/uquote]

Так не ужели нет более менее внятных библиотек?
Ведь это же не просто кнопку нарисовать. А реакция на нажатие? И нажатие анимировать наверное можно....
Не самому же все это писать???
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: STM32 разработка GUI

Сообщение Sergi »

с реакцией и анимацией, за вечер
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

[uquote="Sergi",url="/forum/viewtopic.php?p=4008713#p4008713"]с реакцией и анимацией, за вечер[/uquote]

Ну и ты этим чудом поделился? На github выложил? ))
jcxz
Мудрый кот
Сообщения: 1725
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32 разработка GUI

Сообщение jcxz »

[uquote="Foxhound",url="/forum/viewtopic.php?p=4008710#p4008710"]Не самому же все это писать???[/uquote]Неужто элементарное рисование прямоугольников и горизонтальных/вертикальных прямых вызывает такие затруднения??? :shock:
Посмотрите под лупой на любую виндовую кнопку - там кроме указанных графических примитивов ничего больше не нужно чтобы её нарисовать. В любом положении.
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

[uquote="jcxz",url="/forum/viewtopic.php?p=4008719#p4008719"][uquote="Foxhound",url="/forum/viewtopic.php?p=4008710#p4008710"]Не самому же все это писать???[/uquote]Неужто элементарное рисование прямоугольников и горизонтальных/вертикальных прямых вызывает такие затруднения??? :shock:[/uquote]
Ну не скажите.... Почему бы не воспользоваться тем, что люди уже один раз сделали хорошо?
Например что ни будь подобное

Изображение
Это точно не один вечер делать...

В общем возвращаюсь к вопросу про библиотеки... Кто ни будь что ни будь использует?
Или может покажете свои интерфейсы написаyные руками? Может я и правда масштаб бедствия преувеличиваю?
jcxz
Мудрый кот
Сообщения: 1725
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32 разработка GUI

Сообщение jcxz »

[uquote="Foxhound",url="/forum/viewtopic.php?p=4008721#p4008721"]Изображение
Это точно не один вечер делать...[/uquote]Конечно. Для этого не нужен целый вечер - гораздо меньше. ...при наличии всех необходимых примитивов.
На этой картинке имеются только те примитивы, которые я выше перечислил (кроме фоновой картинки). А полупрозрачные наложения - это всё есть в DMA2D тех же STM32: рисуются 2 картинки в двух разных буферах, а потом с помощью DMA2D комбинируются.
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

[uquote="jcxz",url="/forum/viewtopic.php?p=4008726#p4008726"]Конечно. Для этого не нужен целый вечер - гораздо меньше. ...при наличии всех необходимых примитивов.
На этой картинке имеются только те примитивы, которые я выше перечислил (кроме фоновой картинки). А полупрозрачные наложения - это всё есть в DMA2D тех же STM32: рисуются 2 картинки в двух разных буферах, а потом с помощью DMA2D комбинируются.[/uquote]
Вот.... Уже ближе к конструктиву....
Наверняка есть библиотеки с этими примитивами. Кто ни будь чем ни будь пользуется?
Я пока попробовал только touchGFX все хорошо, но ему как раз нужен пресловутый DMA2D, а он есть только в более менее серьезных чипах.

Добавлено after 17 minutes 7 seconds:
[uquote="jcxz",url="/forum/viewtopic.php?p=4008707#p4008707"]их примитивов уже строится любой контрол GUI.

Ваш вопрос непонятно о чём? О 1-м или о 2-м?
Если 1-е - любой инструмент типа VS и т.п.[/uquote]

А можно подробнее что с этим делать? Как, так сказать, технологический процесс устроен?

[uquote="jcxz",url="/forum/viewtopic.php?p=4008707#p4008707"]их примитивов уже строится любой контрол GUI.
Если 2-е - лучше написать свою реализацию графической библиотеки и с помощью её рисовать контролы GUI. Хотя и готовых их полно, но тут уже возможно будет привязка к чипу и к конкретной структуре видеосистемы.[/uquote]
Ну я точно не сторонник писать что то свое там, где есть что то готовое.
Если их полно, то можно годные примеры?
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 разработка GUI

Сообщение COKPOWEHEU »

В случае с TFT touch screen можно было бы просто обойтись дисплеем.
Не забывайте, что в удобстве физические элементы управления всегда выигрывают у виртуальных. Рисовать кнопки и все остальное имеет смысл только для совсем развесистого функционала, либо удовлетворения маркетологов - дешево, красиво, неудобно.
Нет смысла отрицать прогресс.
Не имеет смысла жертвовать эргономикой ради моды. Даже не прогресса.
Вопрос в том как с минимальными усилиями делать интерфейсы.
Тот же Nuklear попробуйте. Насколько я понимаю, он для этого и предназначен.
всё есть в DMA2D тех же STM32: рисуются 2 картинки в двух разных буферах
Угу. Учитывая, что в контроллере физически не хватит памяти даже на пол-картинки.
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4008740#p4008740"]Тот же Nuklear попробуйте. Насколько я понимаю, он для этого и предназначен.[/uquote]

А есть примеры его использования с STM32?
jcxz
Мудрый кот
Сообщения: 1725
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32 разработка GUI

Сообщение jcxz »

[uquote="Foxhound",url="/forum/viewtopic.php?p=4008729#p4008729"]А можно подробнее что с этим делать? Как, так сказать, технологический процесс устроен?[/uquote]Откройте VS, создайте проект GUI-приложения, добавьте в него диалог, на диалог поместите различные контролы (кнопки, едит-боксы и т.п.), сохраните проект. Далее - в любом текстовом редакторе откройте .rc-файл этого проекта. Увидите что-то типа:

Код: Выделить всё

IDD_OSC_PROP_DLG DIALOGEX 0, 0, 202, 141
STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "ОК",IDOK,48,116,50,14
    PUSHBUTTON      "Отмена",IDCANCEL,104,116,50,14
    PUSHBUTTON      "Edge",IDC_BtnOscPropBaseEdge,8,7,90,12
    CONTROL         "",IDC_EditOscPropBaseEdge,"Static",SS_LEFTNOWORDWRAP | SS_NOTIFY | SS_SUNKEN | SS_ENDELLIPSIS,104,7,90,12
    EDITTEXT        IDC_EditAdcUpdateTime,54,72,41,12,ES_NUMBER | WS_GROUP,WS_EX_RIGHT
    EDITTEXT        IDC_EditAdcAvgTime,54,87,41,12,ES_NUMBER | WS_GROUP,WS_EX_RIGHT
...
END
Это (между BEGIN и END) вставляете в свой проект и в программе с помощью граф.библиотеки граф.примитивами рисуете по этим координатам указанные контролы.

Кроме редактора VS можно пользоваться и другими. Они делают что-то подобное.

[uquote="Foxhound",url="/forum/viewtopic.php?p=4008729#p4008729"]Ну я точно не сторонник писать что то свое там, где есть что то готовое.
Если их полно, то можно годные примеры?[/uquote]А я не сторонник рыться в чужом говнокоде по малейшему поводу и без. Так что тут ничего не подскажу. :dont_know:
Foxhound
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт июл 17, 2018 09:52:27

Re: STM32 разработка GUI

Сообщение Foxhound »

[uquote="jcxz",url="/forum/viewtopic.php?p=4008748#p4008748"]Это (между BEGIN и END) вставляете в свой проект и в программе с помощью граф.библиотеки граф.примитивами рисуете по этим координатам указанные контролы.[/uquote]

Вот с помощью какой графической библиотеки?
jcxz
Мудрый кот
Сообщения: 1725
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32 разработка GUI

Сообщение jcxz »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4008740#p4008740"]Угу. Учитывая, что в контроллере физически не хватит памяти даже на пол-картинки.[/uquote]Странно.... а у меня почему-то хватает... и хватило всего каких-то 4096 байт (при необходимости - нетрудно ещё кратно ужать).
Открою вам страшную тайну: картинку можно обрабатывать частями. Необязательно целиком в память затаскивать.
Кроме того - не обязательно на каждый пиксел тратить 32 бита. Можно экономнее. Для GUI (без полупрозрачностей!) достаточно 4 бит на пиксел - и на весь видеобуфер вполне хватит внутренней памяти многих нежирных МК.

Добавлено after 1 minute 43 seconds:
[uquote="Foxhound",url="/forum/viewtopic.php?p=4008749#p4008749"]Вот с помощью какой графической библиотеки?[/uquote]Любой. У меня своя. Рассчитанная на мой формат хранения видеобуфера и интерфейса с дисплеем.
Ответить

Вернуться в «ARM»