关于gui:OneOS下的图形组件配置学习

学习小计不积跬步无以至千里,不积小流无以成江海。此篇文章,次要对本人应用OneOS下的一个图形组件,对于配置的一些感触,欢送斧正。 性能轻量级GUI框架基于LVGL移植开发,针对图形化开发工具的设计,以模块化的形式,解决物联网操作系统在微控制器下图形界面资源占用过大、源码不可见、图形界面库不对立、应用难度较大的痛点。 次要性能如下: 核心部件,如:按钮、图表、滑杆、图片、复选框、下拉列表、标签、滚轮、开关、线、文本框、弧、进度条等。对象类型的根本属性:地位、尺寸、家长、款式、事件处理程序等等触发事件机制:当被点击、滚动、数值扭转、从新绘制等时,动态创建和删除对象色彩模块:解决所有与色彩相干的性能,如色彩深度、色彩深度之间的转换、混合色彩等图层用于多个对象之间的显示层级关系执行动画的创立、删除、播放、暂停、进行等,治理动画的轨迹、速度、工夫等。具备抗锯齿、不透明度、平滑滚动的高级图形具备相似 CSS 款式的齐全可定制的图形元素反对bmp/png/jpg图片格式反对应用点阵及TTF矢量字库反对多国语言,自带中英文多输出设施反对(如触摸板、鼠标、键盘、编码器等)反对本地模仿仿真配置此份阐明文档次要说明如何高效应用menuconfig对轻量级框架进行疾速应用和配置。 (Top) → Components→ GUI(lcd) GUI display dev name(touch) GUI input dev name[*] Enable LVGL --->touch和lcd是GUI的输入输出设施,选中Enable LVGL即可使能LVGL,目前反对的版本为LVGL7.9和LVGL8.2。 LVGL (Enable lvgl 8.2) ---> LVGL basic menu ---> Widget usage ---> Extra Widgets ---> Themes ---> Layouts ---> Text Settings ---> Font usage ---> LVGL FileSystem ---> LVGL Log ---> LVGL Asserts ---> Third party Lib ---> Extra --->[ ] Enable LVGL examples ----[*] Enable LVGL Demo --->以上是适配反对的LVGL次要menuconfig配置。从上到下一一解释。 ...

July 8, 2022 · 3 min · jiezi

关于gui:基于-OneOSLite-适配-LVGL82

1.前言LVGL7.9很早就曾经在OneOS-Lite适配反对了,随着LVGL的版本迭代,LVGL8.2配合squareline可视化开发工具成了更好的抉择。因而,OneOS-Lite也一并反对了LVGL8.2版本。此篇文章,则是讲讲基于OneOS-Lite适配LVGL8.2的过程,以供分享。 2.LVGL目录构造 由上图可见,摒弃芜杂,最有用的也就是: demos:可用于演示LVGL的图形成果,比方LVGL官网的demo就是它examples:可用于学习时,作为示例应用。更重要的是外面的porting文件夹是移植的要害src:LVGL最要害的源码都在外面了lv_conf_template.h:也是移植的要害哦,通过它可用于配置LVGL外面的性能lvgl.h:是LVGL外面的头文件的总蕴含哦,只须要include lvgl.h,就能够蕴含所有其中头文件啦 3.移植能够先看看移植好的目录构造: 其中: lv_demo.c次要用于通过配置,疾速在OneOS-Lite上实现demo的运行lv_ex.c次要用于通过配置,疾速在OneOS-Lite上实现example的运行lv_port_disp.c是参考lv_port_disp_template.c,用于适配显示相干lv_port_indev.c是参考lv_port_indev_template.c,用于适配输出相干lv_port_init.c是用于把LVGL以一个组件的模式,置入OneOS-Lite中,以便启动时主动初始化另外,其外层还有两个文件须要留神: 其中: lv_conf.h是参考lv_conf_template.h,用于配置LVGL的相干性能kconfig是和OneOS-Lite的cube工具关联,用于配置时可对LVGL的各个性能进行配置,配合lv_conf.h应用,十分不便 4.关注&&分割开源轻量操作系统: https://gitee.com/cmcc-oneos/OneOS-Lite docs文档核心: https://oneos-lite.com/ 知知乎乎:蓁蓁

May 12, 2022 · 1 min · jiezi

关于gui:目前有哪些嵌入式GUI

1.简介最近对嵌入式下的GUI挺感兴趣的,MCU性能虽小,但仍能运行晦涩的图形界面,在可穿戴设施上,或者一些小屏设施上,大有可一展身手之处。不理解不要紧,一理解吓一跳。原来嵌入式GUI曾经倒退得如此蓬勃,生命力旺盛,让人兴奋。有大厂的染指,也有新兴公司的崛起,还有开源创作者的酷爱,每一份GUI都如璀璨的明珠,或大或小,闪闪发光。以下统计了一些,我力所能晓得的一些GUI我的项目,仅供参考: LVGL 开源https://lvgl.io/QT for MCU 闭源https://www.qt.io/zh-cn/produ...ucGUI(emWin) 闭源https://www.segger.com/produc...GUIX 开源https://docs.microsoft.com/zh...touchGFX 闭源https://www.touchgfx.com/GFX 闭源http://www.ugfx.org/柿饼UI 闭源https://www.rt-thread.org/pag...Embedded GUI 闭源http://www.embedded-wizard.de/Storyboard 闭源https://www.cranksoftware.com/Altia 闭源https://www.altia.com/AWTK 开源https://awtk.zlg.cn/docs小巧GUI 开源https://gitee.com/gzbkey/Ling...miniGUI 开源https://github.com/VincentWei...2. QT for MCUGUI组件好多,选了几个本人感兴趣的。首先是QT for MCU,次要是因为QT嘛,大厂,以前次要是做高性能的硬件上的图形库,当初也在涉入MCU了。尽管在MCU畛域肯定不是最好的,但当咱们要往高性能畛域凑近的时候,的确不可或缺的一环。 3.LVGLLVGL是我比拟喜爱的开源GUI我的项目。 丰盛且弱小的模块化图形组件:按钮 (buttons)、图表 (charts)、列表 (lists)、滑动条 (sliders)、图片 (images) 等高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等成果反对多种输出设施:触摸屏、 键盘、编码器、按键等反对多显示设施不依赖特定的硬件平台,能够在任何显示屏上运行配置可裁剪(最低资源占用:64 kB Flash,16 kB RAM)基于UTF-8的多语种反对,例如中文、日文、韩文、阿拉伯文等能够通过类CSS的形式来设计、布局图形界面(例如:Flexbox、Grid)反对操作系统、外置内存、以及硬件加速(LVGL已内建反对STM32 DMA2D、NXP PXP和VGLite)即使仅有单缓冲区(frame buffer)的状况下,也可保障渲染如丝般顺滑全副由C编写实现,并反对C++调用反对Micropython编程,参见:LVGL API in Micropython反对模拟器仿真,能够无硬件依靠进行开发4.GUIX要说GUIX,就不得不说说ThreadX。ThreadX 的作者是 William lamie(同样是 Nucleus RTOS 的原始作者,于 1990 年公布)。1996的时候成立了 Express Logic,并于 1997 公布首版 ThreadX RTOS。而后,公布了它的各个要害组件。 FileX – ThreadX 的嵌入式文件系统于 1999 年公布首版。NetX – ThreadX 的嵌入式 TCP / IP 网络协议栈于 2002 年公布首版。USBX – ThreadX 的嵌入式 USB 协定栈于 2004 年公布首版。GUIX – ThreadX 的嵌入式 UI 于 2014 年公布首版。Microsoft 在 2019 年 4 月 18 日以未公开的价格购买了 Express Logic,也就是说,微软通过ThreadX实现了它的物联网闭环。所以说嘛,threadX值得理解,而他之上的GUIX组件,也仍是能够和其它图形GUI相媲美的存在。5.关注&&分割开源轻量操作系统: https://gitee.com/cmcc-oneos/OneOS-Lite ...

May 12, 2022 · 1 min · jiezi

关于gui:aardio-开发桌面应用这几点必须要掌握

1. 前言大家好,我是安果! 上一篇文章写到能够通过 aardio 联合 Python 开发桌面利用,有些小伙伴后盾给我留言,说 Aardio 材料太少,心愿我能补充一些实用的性能 实用 | 利用 aardio 配合 Python 疾速开发桌面利用 本篇文章将聊聊 Aardio 一些比拟实用的进阶用法 2. 网络申请在 Aardio 中,能够应用「 inet.http 」来发送网络申请 咱们以最简略的 GET 申请为例 这里增加了一个按钮,而后给这个按钮增加了点击事件,在事件外部发送一个网络申请,最初将申请后果打印进去 import win.ui;import console;import inet.http;...//发动GET申请mainForm.get_btn.oncommand = function(id,event){ var http = inet.http(); //这里将查问参数和URL写在一起 var result,err,errCode = http.get("http://ip地址/get?username=xag"); http.close(); if(err){ console.log("错误码:",errCode,"错误信息:",err); }else{ console.log(result); } console.pause()}mainForm.show();return win.loopMessage();如果是解决 POST 申请,能够采纳上面形式: 须要指出的是,创立申请对象 http 时,能够自定义申请头和申请体参数 import win.ui;import console;import inet.http;...//发动POST申请mainForm.post_btn.oncommand = function(id,event){ var http = inet.http(); //增加申请头 http.addHeaders = { ["Content-Type"] = 'application/json' } //发动申请 //申请体:{a=1,b=2} var result,err,errCode = http.post("http://ip地址/books" ,{a=1,b=2}); http.close(); //打印后果 if(err){ console.log(err); }else{ console.log(result); } console.pause()}3. 自定义库通过自定义库,咱们能够将一些罕用的逻辑进行封装,不便代码分层治理 ...

November 8, 2021 · 2 min · jiezi

关于gui:从-Flutter-和前端角度出发聊聊单线程模型下如何保证-UI-流畅性

文章主题是“单线程模型下如何保障 UI 的流畅性”。该话题针对的是 Flutter 性能原理开展的,然而 dart 语言就是 js 的延长,很多概念和机制都是一样的。具体不细聊。此外 js 也是单线程模型,在界面展现和 IO 等方面和 dart 相似。所以联合比照讲一下,帮忙梳理和类比,更加容易把握本文的主题,和常识的横向拓展。 先从前端角度登程,剖析下 event loop 和事件队列模型。再从 Flutter 层登程聊聊 dart 侧的事件队列和同步异步工作之间的关系。 一、单线程模型的设计1. 最根底的单线程解决简略工作假如有几个工作: 工作1: "姓名:" + "杭城小刘"工作2: "年龄:" + "1995" + "02" + "20"工作3: "大小:" + (2021 - 1995 + 1)工作4: 打印工作1、2、3 的后果在单线程中执行,代码可能如下: //cvoid mainThread () { string name = "姓名:" + "杭城小刘"; string birthday = "年龄:" + "1995" + "02" + "20" int age = 2021 - 1995 + 1; printf("个人信息为:%s, %s, 大小:%d", name.c_str(), birthday.c_str(), age);}线程开始执行工作,依照需要,单线程顺次执行每个工作,执行结束后线程马上退出。 ...

June 20, 2021 · 5 min · jiezi