前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一种代替串口屏的开源高效开发解决方案 | | 玲珑GUI在小熊派上的移植

一种代替串口屏的开源高效开发解决方案 | | 玲珑GUI在小熊派上的移植

作者头像
杨源鑫
发布2021-03-30 10:39:11
2K0
发布2021-03-30 10:39:11
举报
文章被收录于专栏:嵌入式开发圈嵌入式开发圈

前几天在安富莱的周报里看到了这个开源的GUI解决方案:

作为一名热衷开源的攻城狮,第一时间就把代码下下来捣鼓一下,项目开源地址:

代码语言:javascript
复制
https://gitee.com/gzbkey/LingLongGUI

玲珑GUI教程:

教程地址:

代码语言:javascript
复制
https://www.yuque.com/books/share/3317aaa7-f47f-4bfd-a4c2-7e64e7f1c4be

以下1、2段摘抄自码云LingLongGUI官方仓库README

1、玲珑GUI介绍

  • 玲珑GUI是高效的界面开发解决方案。
  • 代替串口屏、组态,降低产品成本,产品软硬件自主可控。
  • 配套界面开发软件,图形化编辑界面,生成C代码,直接和用户产品代码结合。
  • 配套下载升级软件和bootloader,解决产品升级功能和图片下载问题。

2、玲珑GUI最终目的

提高开发效率,降低开发难度,降低产品成本。

那么它究竟有多容易呢?杨工带你们体验一下,进入实践环节来体验一下:

3、玲珑GUI在小熊派开发板上的移植

3.1、准备一个能点亮屏的代码工程

这个以前就有了,随便在这下面找一个能亮屏的工程即可:

3.2、移植玲珑GUI
3.2.1、安装LingLongGuiBuilder

安装完毕后,打开的效果是这样的:

接下来需要创建工程,然后再创建GUI文件,拖放对应的控件:

  • 点击File==>New Project==>创建一个工程

如图所示,这里的ST7789对应的这个设备类型是没有的,是我后来自己加上去的,具体怎么让工具支持对应屏的分辨率呢??这时候我们需要给LingLongGuiBuilder添加对应的屏分辨率适配;接下来打开LingLongGuiBuilder安装路径,修改deviceType脚本:

配置完毕然后再次打开LingLongGuiBuilder,就发现我们需要的分辨率被添加进来了,这样我们就成功的创建了一个工程。

点击File==>New File==>创建一个UI布局文件

接下来创建UI布局文件,然后就可以开始我们的UI设计布局了,以下是我的布局:

点击Tool==>Generate==>生成布局文件对应的项目代码

以下就是根据上面UI布局生成的文件:

其中buildOutPut是生成的用户代码,这部分是需要添加到我们代码里的,如下:

3.2.2、移植玲珑GUI到已经具有LCD显示的工程

首先,从码云上下载玲珑GUI的代码:

代码语言:javascript
复制
git clone https://gitee.com/gzbkey/LingLongGUI.git

下载完以后,项目结构如下:

  • 在Keil工程里添加玲珑GUI代码

首先将整个玲珑的工程源码复制到Keil工程下,然后创建其它两个文件夹:

其中:

LingLongGUI:玲珑项目源码

LingLongGUI_Config:配置模板

以上这个模板复制的是LingLongGUI里的这两个文件

LingLongGUI_User:用户文件

这个文件夹存放的就是使用LingLongGuiBuilder生成的buildOutput的代码:

接下来打开Keil MDK工程,

1、修改Keil配置

AC5的Keil编译版本必须填入--no-multibyte-chars,AC6版本的Keil编译版本则不需要

2、导入UI工程文件路径

添加对应的文件到项目中:

3、添加驱动函数及修改配置文件

打开LL_Config.c,添加如下函数:

代码语言:javascript
复制
//TFT打点函数
llCfgSetPoint       
//TFT取色函数
llCfgGetPoint
//TFT矩形单色填充函数
llCfgFillSingleColor

如下所示:

llCfgGetPoint这个函数在小熊派上不适用,所以不需要填,等后面换一个支持触摸屏的板子就需要用到它了,接下来修改LL_Config.h中的屏幕分辨率以及颜色位数:

4、修改MCU堆的大小

由于LingLong GUI在创建GUI的时候需要利用堆来分配空间,所以这里尽量把堆调大一点,否则画出来的GUI控件没法显示完全,当然源码里提供了一个FreeRTOS的堆,你也可以考虑用那个,因为进行堆内存分配时,最好的做法是尽量不要用系统库自带的内存分配函数malloc和free。

5、main函数加入初始化函数和循环函数

包含头文件:

代码语言:javascript
复制
#include "LL_Handler.h"

然后添加:

最后将代码编译并下载到板子上:

4、玲珑GUI展示效果

5、项目开源地址

本节代码已同步到码云的代码仓库中,获取方法如下:

码云仓库:

代码语言:javascript
复制
https://gitee.com/morixinguan/linglong_gui_demo

获取项目方法:

代码语言:javascript
复制
git clone https://gitee.com/morixinguan/linglong_gui_demo.git

我还将之前做的一些项目以及练习例程在近期内全部上传完毕,与大家一起分享交流,如果有任何问题或者对该项目感兴趣,欢迎加我微信:morixinguan一起交流学习。

玲珑GUI目前还正处于快速成长期,还需要各位大佬一起贡献支持,如果你也喜欢这个项目,欢迎给这个仓库点个Star

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式云IOT技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、玲珑GUI介绍
  • 2、玲珑GUI最终目的
  • 3、玲珑GUI在小熊派开发板上的移植
    • 3.1、准备一个能点亮屏的代码工程
      • 3.2、移植玲珑GUI
        • 3.2.1、安装LingLongGuiBuilder
        • 3.2.2、移植玲珑GUI到已经具有LCD显示的工程
    • 4、玲珑GUI展示效果
    • 5、项目开源地址
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档