博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AliOS Things图形界面开发指南
阅读量:6074 次
发布时间:2019-06-20

本文共 1907 字,大约阅读时间需要 6 分钟。

简介

物联网设备开发过程中,嵌入式GUI(用户图形界面)的开发是一个重要的组成部分。许多智能设备如智能家电、智能手表、智能仪表上都会涉及到GUI开发。AliOS Things集成开源图形库littlevGL,可以在linux上进行图形界面开发。开发完成后将代码添加到相应的工程并完成显示和输入设备驱动的对接,程序即可在相应的硬件上运行,方便用户进行嵌入式GUI开发。

littlevGL是一个开源的嵌入式图形库,采用C语言开发,使用MIT协议,并在持续更新中。该图形库支持常用的控件,如按钮、列表、滑块、选择框、仪表盘、键盘、波形等。并支持触摸、鼠标、键盘等多种输入方式。其官方网站为:https://littlevgl.com。

linux模拟开发步骤

1、环境安装

a、按照AliOS Things Linux Environment Setup安装基本环境。

b、按照如下命令安装SDL2图形库。

  sudo apt-get install libsdl2-2.0:i386

  sudo apt-get install libxkbcommon-dev:i386

  sudo apt-get install libmircommon-dev:i386

  sudo apt-get install libmirclient-dev:i386

  sudo apt-get install libegl1-mesa-dev:i386

  sudo apt-get install libglib2.0-dev:i386

  sudo apt-get install libpulse-dev:i386

  sudo apt-get install libsdl2-dev:i386

2、拷贝代码

git clone https://github.com/alibaba/AliOS-Things.git

3、模拟运行

编译运行命令:aos make littlevgl_simulate@linuxhost

编译通过之后会自动运行生成的可执行文件,界面如下

用户可以自行添加应用代码,开发完成后将代码添加到相应的工程并完成显示和输入设备驱动的对接,程序即可在相应的硬件上运行。

example/littlevgl_simulate/lv_examples目录下包含demo程序以及各个控件使用的示例程序,可参考进行界面开发。

AliOS Things开发版开发步骤:

在starterkit的开发版上已经移植littlevgl,用户直接运行命令即可编译GUI工程。

编译命令:aos make littlevgl_starterkit@starterkit

编译完成后下载到starterkit即可。

其他CPU开发步骤:

1、显示驱动实现

a、使用内部缓冲区(lv_conf.h的LV_VDB_SIZE > 0)

必须实现如下函数,其功能为对一片矩形区域填充颜色,注意该函数的最后必须调用lv_flush_ready()函数。

b、使用硬件加速(USE_LV_GPU = 1 且使用内部缓冲区)

必须实现如下函数:

c、不使用缓冲区

必须实现如下函数:

2、输入驱动实现

a、触摸或者鼠标等点输入设备

必须使用如下函数,获取点坐标

b、键盘设备

必须使用如下函数:

3、初始化

a、将framework/GUI/littlevGL目录下的文件添加到工程。

b、根据需要配置lv_conf.h中相应的宏定义。

c、调用lv_init()初始化littlevGL。

d、初始化显示和输入(键盘、鼠标、触摸等)设备。

e、调用lv_disp_drv_init初始化显示驱动,调用lv_disp_drv_register注册显示驱动。调用lv_indev_drv_init初始化输入驱动,调用lv_indev_drv_register注册输入驱动,示例代码见附录。

f、在时钟中断中调用lv_tick_inc(1),为littlevGL提供心跳。

g、创建一个低优先级任务,在其中重复调用lv_task_handler函数,进行图像的刷新和输入事件的响应。

4、APP编写

用户可以自行添加相应的应用代码。

其他

AliOS Things也支持STemwin,在starterkit的开发版上已经移植STemwin,用户直接运行命令即可编译GUI工程。

编译命令:aos make starterkitgui@starterkit

附录

驱动初始化和注册示例代码如下:

阅读更多干货好文,请关注扫描以下二维码:

转载地址:http://ldigx.baihongyu.com/

你可能感兴趣的文章
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
dom4j解析xml文件
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>