LINUX.ORG.RU

MakiseGUI — свободная библиотека графического интерфейса для микроконтроллеров

 , , , ,


9

4

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

Цели разработки:

  • Простота использования: писать интерфейс не должно быть сложнее, чем с использованием WindowsForms и т. п.
  • Простота интеграции: встроить и запустить интерфейс в приложении должно быть максимально просто на любом оборудовании или ПО.
  • Чистый С: используется только gnu-c99 и стандартная библиотека.
  • Минимальное потребление ОЗУ: возможность использования на средних микроконтроллерах без внешней памяти (примерно 40 КиБ с цветным дисплеем 320×240).
  • Достаточное количество графических элементов для комфортной разработки, простое добавление новых.
  • Свободная лицензия и бесплатное использование даже в коммерческих проектах.

На данный момент существуют следующие элементы:

  • MButton — кнопка, которая отображает текст посылает события при нажатии.
  • MCanvas — простейший контейнер, который просто содержит элементы.
  • MLable — простейшее текстовое поле.
  • MTextField — текстовое поле, поддерживающее перенос слов и переносы.
  • MSlider — слайдер.
  • MToggle — кнопка, имеющая два состояния.
  • MSlist — список. Может быть как простым списком, так и radio-кнопками или чекбосками. Поддерживает обычные списки и динамические линкованные.
  • MTabs — вкладки. Несколько переключаемых контейнеров.

>>> GitHub

>>> Подробности работы, видео, примеры кода

★★★★

Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 7)

Ответ на: комментарий от SL_RU

А куда, если не на хабр?

На опеннет, например. Да мало ли куда еще. Хабр не плохая площадка, но ссылки на неё не долюбливают (хотя бы потому, что там часто куда-то улетают статьи, по воле «нло» ихнего или по воле автора, фиг разберешь).

mandala ★★★★★
()

В статье на Хабре предлагаю убрать одну «ф» из слова «буфера» вот тут: «Инициализация

Инициализация предполагает только лишь запуск драйвера, задание размеров и выделение памяти для структур и буфферов элементов. <--------

Andrew-R ★★★★★
()

Опять же опечатки наверное (в тексте на Хабре)..

MSlist — список. Может быть как просто списком, так и radioкнопками, так и чекбосками.

тут бы тире, между «радио» и «кнопками»?

/цвет заднего фона | шрифта бортик есть лидвойной бортик

между «ли» и «двойной» пробел пропал.

Andrew-R ★★★★★
()

Как уже на хабре подметили, обязательно нужна перерисовка только области экрана. Вот рисует GUI часики где-то в углу и ещё какие-то числа иногда обновляются, зачем перегонять всё содержимое экрана (при питании от аккумулятора).

Интересно было бы сравнить с http://www.embeddedlightning.com/ugui/, которым реально пользуются.

gag ★★★★★
()
Ответ на: комментарий от gag

Угусь - это реально нужная вещь. Обязательно воплощу!

SL_RU ★★★★
() автор топика

MButton, MLable (label же) ...

А чего не TButton и TLabel? :)

Цель непонятна, но автор молодец.

anonymous
()

Мне не нужно, но название хорошее. Макисе - жизнь.

RazrFalcon ★★★★★
()
Ответ на: комментарий от loz

Библиотека функциональна от 20кб. А так то объём памяти ограничен только адресным пространством. Можно внешнюю раму ставить.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

А куда, если не на хабр?

Если еще нет, то налетят с великолепной аргументацией что оно «не торт» и вообще не тру потому что не на англиком языке.

Кстати за бугруом с аналогами хабра все не оче хорошо, в основном разрозненные блоги которые работают как придется и агрегатор на человеческом движке - reddit с жутким дизайном. Хотя в последнее время все больше натыкаюсь на medium и hackernoon

Dred ★★★★★
()
Ответ на: комментарий от Dred

Я вот перевёл статью и планирую кинуть её куда-нить. Пока ищу

SL_RU ★★★★
() автор топика
Ответ на: комментарий от Dred

reddit с жутким дизайном

Господи! Неужели я увидел человека, который как и я думает что дизайн реддита - это ад?!

Pinkbyte ★★★★★
()

Минимальное потребление ОЗУ: возможность использования на средних микроконтроллерах без внешней памяти (примерно 40 КиБ с цветным дисплеем 320×240)

320 * 240 = 76800

так что не надо вводить в заблуждение - при таком разрешении даже убогая 8-битная графика потребует внешнюю память

anonymous
()

Меня сильно смутило слово «бесплатная» (обычно так маркируют проприетарщину), я начал искать лицензию, и только в конце хабрастатьи нашёл, что это MIT. Думаю, стоило бы добавить это в текст новости.

И ещё у меня нубский вопрос - это законченный инструмент для создания прошивки контроллера, или оно должно запускаться поверх чего-то ещё? В статье написано:

Чистый Си. Был использован только gnu-c99 и из библиотек только stdlib

В качестве демонстрации возможностей библиотеки и примеров использования может быть использован проект созданный специально для этих целей ... Может быть скомпиллирован и запущен на любом linux дистрибутиве.

Ну «на linux дистрибутиве» - это, как я понимаю, для отладки и тестирования. А что нужно, чтобы из этого прошивка получилась?

anonymous
()
Ответ на: комментарий от anonymous

А что почитать по этому вопросу?

anonymous
()

писать интерфейс не должно быть сложнее, чем с использованием WindowsForms

Хз смеяться тут или плакать

upcFrost ★★★★★
()

Можете подсказать по следующему вопросу?

Я немного знаю С, и было бы интересно заняться программированием микроконтроллеров.

Что под эти подразумевается? Где для «баловства» можно купить простейший с дисплеем?

Arduino, или есть что подешевле?

anonymous
()
Ответ на: комментарий от anonymous

Но зачем хранить в памяти буфер 8битный целиком?

У меня пример для stm32 и 320х240. Как буфер используется 2 битная палитра, а для вывода плавающий маленький буфер. Занимает 30кб оперативной памяти.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от anonymous

Я немного знаю С

Начни хотя бы с того, что выучи с/с++

Что под эти подразумевается?

Пишешь программу, обычно на с/с++, обычно с использованием каких-то системных библиотек для МК, который ты юзаешь. Потом ты это компилируешь на ПК компилятором для которого есть бэк-енд для твоего МК, обычно это gcc, и потом что-то типа по Юарту заливаешь бинарник в память МК, запускаешь его и фсе.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от SL_RU

Но зачем хранить в памяти буфер 8битный целиком?

потому что графическому контроллеру нужен буфер экрана

У меня пример для stm32 и 320х240.

если речь про это

Existing drivers:

2.2 inch tft 240x320 on ILI9340C

http://www.hpinfotech.ro/ILI9340.pdf

стр. 7

2. Features

...

a-TFT LCD driver with on-chip full display RAM: 172,800 bytes

то что эта память не явно припаяна к микроконтроллеру а встроена во внешний графический контроллер сути не меняет. Если будете использовать встроенный в микроконтроллер графический контроллер то вам уже понадобится эта память в явном виде.

anonymous
()
Ответ на: комментарий от BceM_IIpuBeT

Какой девайс посоветуешь приобрести? Может, есть что-нибудь дешевле arduino?

И, кстати, на arduino можно писать на чистом c или c++?

anonymous
()

Сходу недостатки:

1. Швабр

2. Аниме

3. Пони.

cantus
()

Makise

Это же надо было так «make easy» переврать.

cantus
()
Ответ на: комментарий от anonymous

У экрана своя память и свой контроллер. И что? Речь же идет об использовании памяти МК, на котором выполняеться твоя программа.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от BceM_IIpuBeT

У экрана своя память и свой контроллер. И что?

то что это совем не очевидно в данном завлении

возможность использования на средних микроконтроллерах без внешней памяти

еще раз повторю - без внешней памяти 320х240 не получится на таких контроллерах

Речь же идет об использовании памяти МК, на котором выполняеться твоя программа.

теперь сравни ценник на TFT LCD с контроллером и встроенной RAM и свой мелкоконтроллер - эран в разы дороже, так что проще не страдать хернёй а взять нормальный процессор на ARM с MMU и нормальным ядром Linux.

anonymous
()
Ответ на: комментарий от Pinkbyte

Господи! Неужели я увидел человека, который как и я думает что дизайн реддита - это ад?!

Я тоже так думаю.

anonymous
()
Ответ на: комментарий от anonymous

Китайские копии Arduino вроде дешевые. Если ты мало что понимаешь в этом, то для быстрого старта купи ардуину, которая на 328 атмеге, что-то типа уно или нано. Там уже встроенный usb-com контроллер через который прошивается. Много библиотек и материала на российском. Купить можно на Али. Или если ты из Украины, то тут: https://arduino-ua.com/

И, кстати, на arduino можно писать на чистом c или c++

На чистом с/с++(даже с++11 есть) с использованием системных либ. Ну можно и с ассемблерными вставками писать, но это не очень переносимо.

BceM_IIpuBeT ★★☆☆☆
()

Так и не понял, юнит тесты у этого поделия есть или нет? Без этого использовать это в продакшене абсурд.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от anonymous

еще раз повторю - без внешней памяти 320х240 не получится на таких контроллерах

Так речь и не об этом же.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от anonymous

а взять нормальный процессор на ARM с MMU и нормальным ядром Linux.

Зачем для стрельбы по воробьям брать гранатомет?

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от art_corp

Хорошо, тогда добавлю. Это первый серьёзный проект мой в опенсорсе

SL_RU ★★★★
() автор топика
Ответ на: комментарий от anonymous

ide для arduino

Хорошо годится для того, чтобы набросать кирпичиков-библиотек и получить что-то реально работающее, но что скрывается за этим, остаётся магией.

GAMer ★★★★★
()
Ответ на: комментарий от SL_RU

Твой подход уже говорит о неверном направлении. Ни документации, ни тестов, ни CI - только сумасшедшие люди используют такие проекты. Этот на самом деле позор какой-то, выкладывать такое.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от GAMer

Так в логах все пишет: что куда линкует, чем и с какими параметрами загружается в мк. Где-то на форуме есть пост на, как чувак линковал ардуиновские либы без этой самой ide.

BceM_IIpuBeT ★★☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.