Графическая библиотека для встроенных систем без Linux? [закрытый]

Фигурные скобки обозначают содержание лямбда-выражения. Kotlin уже передал экземпляр OnClickListener за кулисы и предоставляет вам метод onClick().

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

button.setOnClickListener(clickListener)

Если вы хотите использовать функцию, она такая же, как Java:

button.setOnClickListener(this::clickListener)

fun clickListener(v: View) {}
10
задан about 14 December 2008 в 08:11
поделиться

10 ответов

К тому времени, когда Вы включаете некоторое решение других производителей, Вы, возможно, просто записали это сами.

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

Существуют тонны бесплатного кода там для проведения линий и дуг и т.д.

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

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

Если Вы будете использовать универсальный C, и никакие вызовы libc (запишите свой собственный memcpy, memset, и т.д.), то этот код будет работать куда угодно на хосте к разработке и на цели.

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

Или просто купите одно из многих жидкокристаллических решений, которые делают все это для Вас, и Вы просто отправляете, оно управляет как ничья "Привет Миром!" в некоторых (x, y) использование синего как передний план и белый как фон.

В основном я думаю, что решения неOS все еще собираются пользоваться слишком многими библиотеками и быть слишком большими для Вашего определенного приложения. 2-е массивы байтов или пикселей тривиальны для управления собой. Даже если бы Вы пишете приложение для настольной платформы, я сделал бы это этот путь и в последнюю минуту скопировал бы полностью renedered, экранное обновление некоторой зависимой библиотеки OS (допускает максимальную мобильность от одной ОС или не другому).

3
ответ дан 3 December 2019 в 20:44
поделиться

Мы использовали "ШТЕПСЕЛЬ", версию C++, от Swellsoftware много лет. Это - коммерческое программное обеспечение, не бесплатное, но базовый экранный драйвер может использовать просто указатель на видеопамять, и они обеспечивают много демонстрационных драйверов для различных типов аппаратного обеспечения машинной графики. Мы записали наш собственный драйвер (драйверы) для нашего закрытого аппаратного обеспечения, с помощью демонстрационных драйверов в качестве ссылки. У нас всегда был своего рода RTOS, но я полагаю, что ШТЕПСЕЛЬ + может также работать без ОС.

Проверьте его здесь: http://www.swellsoftware.com/

удачи,

6
ответ дан 3 December 2019 в 20:44
поделиться

Не свободный, но хороший в низких системах ресурса: http://www.tat.se и их продукты Kastor и Cascades. Это только требует указателя на видеопамять, malloc и что-то, что похоже на файловую систему. Последние два требования не абсолютно необходимы также. Никакая операционная система не требуется.

2
ответ дан 3 December 2019 в 20:44
поделиться

Если Ваши требования для интерактивности и виджетов GUI очень скромны (или Вы соглашаетесь с разработкой Ваших собственных виджетов), взгляните на LibGD. Нарисуйте изображение, которое Вы хотите появиться на экране с помощью функций библиотеки и затем записать этому в кадровый буфер с помощью gdImagePngToSink ().

2
ответ дан 3 December 2019 в 20:44
поделиться

Вероятно, необходимо сжать шрифты с помощью Кодирования по длинам серий (RLE). Посмотрите .pcx формат файла для примеров, хотя, вероятно, лучше разработать пользовательский RLE. Вы не указывали битовую глубину жидкокристаллического дисплея, но шрифтам нужен или один бит на пиксель, если сглаживание не необходимо, или максимум трех бит/пкс со сглаживанием. Каждый символ должен иметь свою собственную ширину, потому что моноширинный текст не хорош. Необходимо представить непосредственно от сжатого шрифта RLE до экрана, с помощью оптимизированной стандартной программы.

SDL является очень портативной графикой libary. Это используется во встроенных системах Linux, но я думаю, что это может использоваться без ОС. Хорошая вещь о SDL состоит в том, что можно использовать Windows / Linux, чтобы разработать и протестировать UI и более позднюю цель встроенная система. Никакие изменения в коде приложения не необходимы!

Вы могли также использовать библиотеку Anti-Grain Geometry (http://www.antigrain.com/about/index.html) сверху SDL. С жидкокристаллическим дисплеем на 16 или 24 бита это производит ошеломляющую графику. Это могло бы быть просто немного слишком большим для Вашей среды, потому что мой исполняемый файл в системе ARM/Linux составлял приблизительно один мегабайт. Это содержало SDL, AGG и libfreetype2 для рендеринга шрифта. AGG является также немного медленным, но приводит к красивым результатам.

1
ответ дан 3 December 2019 в 20:44
поделиться

Важной вещью, которой Вы должны быть обеспокоены, является контроллер жидкокристаллического дисплея и сенсорного экрана. Существует распространенность библиотек C (не свободна) для той задачи. Быстрый Google получил меня эти результаты: Упростите Technologies и Ramtex.

Если Вы хотите найти что-то открытым исходным кодом, то запустите с типа своего контроллера, и поиск встроил форумы устройств (даже если это не ARM, Вы могли легко код порта C). Некоторые предложения:

Кроме того, некоторые производства наборов предлагают SDK (и с и без Linux) с их платами. Покупка платы обычно дает Вам лицензию для использования кода. Поиск макетных плат с тем же жидкокристаллическим контроллером.

2
ответ дан 3 December 2019 в 20:44
поделиться

Я предполагаю, что что-то вроде FreeDOS в сочетании с DJGPP в качестве набора инструментов и Allegro в качестве графической библиотеки, возможно, подойдет в 512 Кбайт флэш-памяти и все еще выполняет разумную работу (я предполагаю, что у вас есть x86, у которого здесь есть несколько Мб оперативной памяти)

Но эти вещи очень специфичны для x86 (хотя Allegro не является таковым).

Это сложно получить ядро ​​Linux и полезное количество пользовательского программного обеспечения внутри 512 Кб (но можно получить ЧТО-ТО)

0
ответ дан 3 December 2019 в 20:44
поделиться

You should give easyGUI a try.

easyGUI is a GUI graphics software/library specifically designed to work on small(er) Embedded Systems.

No operating system needed. A basic cyclic executive is enough. 512kb of Flash should be more than OK. The library easyGUI provides is very flexible in helping to minimize the amount of Flash you need.

Supports fonts, graphics, bitmaps, touch screens and a bunch of video controllers out of the box.

Plus it is really cheap (no licensing fees, just a flat amount per seat) and comes with a PC program to design screens and generate code. The PC program takes a while to get used to but in the end it is very nice to try certain things out on the PC and then just generate and watch it run on your target.

They have a demo app on their website. It is worth checking it out.

0
ответ дан 3 December 2019 в 20:44
поделиться

512 КБ являются маленькими.Удачи!

Вы могли бы хотеть попробовать dsl, объединенный mplayer. Последнему не нужен GUI для отображения фильма. Я предполагаю, что это могло также отобразить изображения.

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

-1
ответ дан 3 December 2019 в 20:44
поделиться

Для минимально возможной занимаемой площади вам действительно стоит подумать о RamTEX. Я использовал его в двух проектах с 8-битными PICS. В моих приложениях объем ПЗУ составлял около 35 КБ с ~ 1 КБ для ОЗУ (количество зависит от того, нужна ли вам буферизация ОЗУ для дисплея). Пространство ПЗУ зависит от графических функций, которые вам нужны или нужны.

Они предоставляют полный исходный код, и разовая цена вполне приемлема, менее 1000 долларов (обратите внимание, что цены, указанные на их веб-сайте, должны быть конвертированы в доллары или другую валюту). Нет никаких лицензионных отчислений или ограничений на продукт.

Они предоставляют несколько шрифтов различного размера и стиля, а также основные вызовы рисования (линии, пиксели, прямоугольник и т. Д.). В нем нет определенных «объектов», таких как кнопки или меню, но мне удалось без особых проблем реализовать всплывающее меню. Он поддерживает «видовые экраны», которые можно использовать для определения текстовых полей, меню и т. Д., Каждое со своими собственными атрибутами.

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

2
ответ дан 3 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: