1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Polarix-simplegui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Introduction.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 19:19 a66f5b5

SimpleGUI проект

Происхождение

Этот проект системы графического интерфейса пользователя (GUI) возник из реальной потребности. Автор учился встраиваемым системам в университете, и после окончания университета он продолжает заниматься разработкой программного обеспечения для встраиваемых систем. Однако автор отмечает, что его заработная плата недостаточна, поэтому в свободное время он также занимается разработкой на стороне.

Предыдущие проекты часто включали в себя только несколько лампочек и кнопок, а связь с мобильными устройствами или компьютерами осуществлялась через последовательный порт, USB или Bluetooth. Управление обычно выполнялось через мобильные устройства или компьютеры. Взаимодействие с устройством не выполнялось на самом устройстве.

Однако в прошлом году автор получил заказ на разработку системы управления, которая должна была обеспечивать полноценное взаимодействие с пользователем. Для отображения информации требовалось использовать дисплеи 12864 или 19264. По словам автора, ему не нравится эта работа, потому что для такой сложной операции требуется поддержка GUI, а микроконтроллеры не могут предоставить полный набор функций, как компьютеры. Вместо этого разработчикам приходится создавать собственные реализации, иногда даже используя суперкомпьютеры, которые кажутся более простыми. Но клиент — это Бог, и автор решил взяться за эту работу.

Зарождение

Сначала автор попытался использовать emWin, но столкнулся с некоторыми проблемами. Во-первых, использование лицензии было обязательным при компиляции с помощью Keil, и неясно, требуется ли лицензия при использовании других интегрированных сред разработки (IDE). Для авторов, особенно тех, кто занимается разработкой в свободное время, деньги имеют решающее значение! Даже если взломать систему, неизвестно, когда придёт письмо от адвоката!

Во-вторых, emWin требует значительных ресурсов памяти, а память на микроконтроллерах обычно ограничена. Автор также узнал от участников группы emWin о необходимости внешних хранилищ, поддержки файловых систем и расширения памяти для создания красивых графических интерфейсов. Это приводит к значительным дополнительным затратам как на проектирование программного обеспечения, так и на аппаратное обеспечение.

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

Автор искал информацию в интернете, включая код ZLGGUI от Чжоу Лиго, и начал разрабатывать свой собственный графический интерфейс. Поскольку проект изначально использовал дисплей KS0108, система была разработана специально для KS0108. Позже автор изучил возможность использования встроенного набора символов ST7920, но ограничения на использование библиотеки символов сделали этот вариант менее привлекательным, и он отказался от него. Так появился прототип SimpleGUI.

Первый шаг

Первоначальной задачей было реализовать функцию отображения произвольного текста в любом месте экрана. Все найденные в интернете решения были основаны на базовом режиме работы KS0108 для отображения текста. Координаты должны были быть кратны 8. Сначала автор следовал этому подходу, используя символы размером 8x16 для английского языка и 16x16 для китайского языка. Однако позже он обнаружил, что внешний вид был не идеальным, и его первой задачей стало отображение китайских иероглифов любого размера в любой позиции пикселя. После недели усилий проблема была решена, и автор обнаружил, что китайские иероглифы размером 12 пикселей выглядят лучше, чем 16 пикселей, особенно при создании списков с пробелом в один пиксель между элементами.

SimpleGUI прототип

Улучшение интерфейса

Для завершения проекта автор создал несколько часто используемых интерфейсов, таких как рисование точек, линий, прямоугольников и областей с инвертированным цветом. Затем на основе этих базовых графических операций были созданы списки и поля для настройки даты и времени. Автор обнаружил, что некоторые операции, особенно инвертирование цвета, требуют считывания точек, и экран обновляется очень медленно, что вызывает раздражение. В результате автор выделил 1,5 КБ памяти на микроконтроллер (192 * 8 = 1536) для хранения отображаемых данных. Каждый байт соответствует странице на экране, и все операции выполняются здесь. Кроме того, есть четыре метки, указывающие на изменённые прямоугольные области, чтобы обеспечить локальное обновление экрана и улучшить внешний вид.

Чтобы уложиться в срок, некоторые коды были реализованы поспешно, и они всё ещё далеки от универсальности. Тем не менее, в проекте есть несколько интересных дизайнерских решений, таких как введение параметров списка и смешивание элементов списка разных типов.

Публикация и открытость исходного кода

SimpleGUI изначально не имел названия, поскольку автор не планировал публиковать исходный код. Причины этого уходят корнями в прошлое.

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

Однажды автор отказался предоставить оригинальный дизайн, и человек начал оскорблять его. С тех пор автор перестал публиковать свои работы в Интернете...

Открытость исходного кода вновь зажгла надежду автора благодаря OSC Open Source China. Как он попал туда, автор точно не помнит, но он понял, что атмосфера на этом сайте отличается от той, которую он раньше считал враждебной. Здесь люди делятся своими идеями и учатся друг у друга. Код хранится и обновляется более профессионально и удобно по сравнению с форумами.

Хотя автор не любит просить помощи у других, он решил поделиться своим проектом с сообществом, рассматривая это как способ вернуть услугу.

Стандартизация

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

Поскольку у автора мало свободного времени, он принёс свой проект на работу и начал удалять специфический код, оставляя только функции рисования интерфейса. Из-за языковых различий на рабочем месте автор написал подробные комментарии на английском языке, учитывая возможные проблемы с переводом. Он планирует обновить комментарии до китайского языка после доработки кода.

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

Название SimpleGUI было предложено участниками форума OpenDev.

Внедрение новшеств

В процессе разработки и отладки SimpleGUI автор столкнулся с новой проблемой. Изначально данные библиотеки символов хранились внутри микроконтроллера, и процесс записи двоичного файла, содержащего библиотеку GB2312, занимал около 30 секунд. Иногда даже небольшие изменения требовали ожидания в течение полуминуты, что было невыносимо для нетерпеливого автора.

Тогда он вспомнил о симуляторе emWin, который позволял запускать программы на компьютере. Так родился новый проект.

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

Симулятор также является открытым проектом, доступным для всех желающих использовать SimpleGUI для своих проектов.

Нестандартный подход

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

Так появился LCDSimulator, ещё один проект, основанный на SimpleGUI. Его можно найти на определённом форуме и на GitHub.

Заключение

Разработка и поддержка SimpleGUI заняли больше года, начиная с разочарования и заканчивая небольшими успехами, постепенным построением системы и постоянным обновлением. Сегодня проект достиг своего текущего состояния.

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

Наконец, автор выражает благодарность группе wxWidgets (104728878) за помощь.

Перед публикацией SimpleGUI автор обсудил свою работу с другом из Гуанси, с которым он познакомился через телефон. Они оба являются техническими специалистами и встретились случайно. Разговор касался их текущих исследований, прошлых исследований и проектов, над которыми они работали. Многие вещи стали очевидными, и автор пришёл к выводу, что эпоха героев-одиночек прошла. Один человек не может быть экспертом во всём, и многие задачи требуют сотрудничества. Открытость исходного кода становится способом обмена знаниями и опытом. Иногда можно увидеть, как люди оставляют комментарии на чужих публикациях, говоря, что они новички и восхищаются опытными разработчиками. В мире IT нет избранных — все мы начинали с нуля и шаг за шагом продвигались к желаемой цели. Конечно, у каждого свои сильные стороны, и нельзя всех оценивать по одному стандарту.

Как уже было сказано, open source — это коллективный труд многих людей. Возможно, мои навыки кодирования не так хороши, но я могу предложить красивый значок или найти баг при использовании публичной библиотеки и сообщить об этом всем пользователям и разработчикам… На самом деле, мы можем сделать многое для open source, иногда разработчикам нужна лишь идея.

Open source — это не просто развлечение, это процесс общения, обучения, улучшения и инноваций. В open source есть работы, которые могут конкурировать или превосходить платные аналоги. На мой взгляд, использование open source экономит деньги, но требует большей ответственности.

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

С уважением, каждый open source разработчик.

Участие в обсуждении

Если вы хотите участвовать в обсуждении и улучшении SimpleGUI, вы можете оставить комментарий:

  1. Страница SimpleGUI на Open Source China: https://www.oschina.net/p/simplegui.
  2. Страница на Code Cloud: https://gitee.com/Polarix/simplegui.
  3. Группа QQ: 799501887.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/Polarix-simplegui.git
git@api.gitlife.ru:oschina-mirror/Polarix-simplegui.git
oschina-mirror
Polarix-simplegui
Polarix-simplegui
Stable