第四章 PC模拟器的使用
PC模拟器是指可以在电脑上模拟其他平台的模拟器软件。在没有硬件的情况下,用户依然可以使用模拟器来调试GUI,除此之外,模拟器对于产品说明书的制作也有很大的用处。LVGL作为一款优秀的 GUI 图形库,它是支持模拟器功能的,并且LVGL官方提供了多个平台的模拟器工程,本书主要介绍VisualStudio模拟器工程的使用。
本章节将分为以下几个小节:
4.1 LVGL模拟器工程下载
4.2 模拟运行LVGL例程
4.3工程文件解析
4.1 LVGL模拟器工程下载
LVGL的VisualStudio模拟器工程的获取方式主要有两种:①正点原子开发板的A盘资料(推荐)、②官方的git仓库。这里建议新手的朋友使用第一种获取方式,因为从官方的git仓库获取该工程,可能会频繁地失败。接下来我们分别介绍这两种获取方式:
1. 从A盘资料获取
VisualStudio模拟器工程所在路径:A盘→4,程序源码 →3,扩展例程 →3,LVGL例程 →LVGL例程3 PC端模拟LVGL。注意:这个文件夹里面提供了两个平台的模拟器工程,lv_port_win_visual_studio-master.zip压缩包中存放的是VisualStudio的模拟器工程,界面如下图所示:

图4.1.1 模拟器工程压缩包界面
2. 从官方的git仓库获取
打开LVGL官方的在线文档(https://docs.lvgl.io/master/index.html),点击“Get started”选项,界面如图4.1.2所示,然后再点击“Simulator on PC”选项。

图4.1.2 在线文档界面
进入“Simulator on PC”页面后,即可看到不同平台的LVGL模拟器工程,如下图所示:

图4.1.3 不同平台的模拟工程
接下来点击上图中的“VisualStudio with SDL driver”选项,进入VisualStudio模拟器工程的下载页面,如下图所示:

图4.1.4 git仓库下载工程的界面
在这个页面中,我们可以选择压缩包或者git的方式下载模拟器工程。值得注意的是,该仓库中存在子仓库,如果采用压缩包的方式下载工程,还需要将子仓库的文件分别下载,并复制到主工程相应的文件夹当中,子仓库的界面如下图所示:

图4.1.5 子仓库界面
4.2 模拟运行LVGL例程
在上一小节中,我们已经获取到VisualStudio模拟器工程,接下来为大家介绍LVGL模拟器工程的使用。
1. 安装VisualStudio2019
VisualStudio2019软件的官方下载网址如下(有可能失效):https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes,大家下载后自行安装即可。
2. 打开模拟器工程
打开lv_port_win_visual_studio-master文件夹(如果是压缩包,则需要解压出来),双击LVGL.Simulator.sln文件,打开LVGl模拟工程,具体界面如图4.2.1所示:

图4.2.1 打开LVGl模拟工程
3. 设置配置管理器
设置平台为x64,如下图所示:

图4.2.2 设置配置管理器
4. 调试例程代码
点击“本地Windows调试器”,即可开始调试代码,具体操作界面如下图所示:

图4.2.3 开始调试
官方例程运行之后,界面如下图所示:

图4.2.4 官方例程界面
4.3 工程文件解析
1. LVGL.Simulator.cpp文件
对于LVGL.Simulator.cpp文件,我们一般只需要关注两个地方:①屏幕分辨率设置;②示例函数的调用。首先来看屏幕分辨率的设置,其在main函数中,如下图所示:

图4.3.1 屏幕分辨率设置
用户可以根据实际项目中的屏幕分辨率来进行设置,这样模拟出来的效果就更加的贴合实际。注意:LVGL官方的例程,默认仅支持800*480的分辨率。
接下来,我们看示例函数的调用,其同样在main函数中,如下图所示:

图4.3.2 示例函数调用
由上图可知,示例函数的调用非常简单,如果用户使用的是LVGL官方的例程,只需要将相应的示例函数取消注释即可;如果需要自行编写测试代码,可直接在此处编写(不推荐),或者另外封装函数,然后在此处调用(推荐)。
2. lv_conf.h文件
在LVGL的模拟器项目中, lv_conf.h文件非常重要,该文件负责LVGL功能的裁剪以及设置,这里我们主要介绍几个重点的地方:
①设置颜色深度:
/* 颜色深度: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/ #define LV_COLOR_DEPTH 16
如果实际的项目对于色彩的要求较高,建议根据实际显示屏的颜色深度来进行设置,否则模拟的效果与现实设备运行的效果可能有较大区别。
②设置内存大小
#define LV_MEM_SIZE (1024U * 1024U) /* 字节为单位,建议贴合实际的设备 */
③设置显示刷新周期和输入设备读取周期
/* 默认显示刷新周期,LVG将在这段时间内重绘改变过的区域 */ #define LV_DISP_DEF_REFR_PERIOD 10 /*[ms]*/ /* 输入设备读取周期(毫秒) */ #define LV_INDEV_DEF_READ_PERIOD 10 /*[ms]*/
④字库的使用
/* 字库使用,设置1启用,设置0为失能 */ #define LV_FONT_MONTSERRAT_8 1 #define LV_FONT_MONTSERRAT_10 1 #define LV_FONT_MONTSERRAT_12 1 #define LV_FONT_MONTSERRAT_14 1 #define LV_FONT_MONTSERRAT_16 1 #define LV_FONT_MONTSERRAT_18 1 #define LV_FONT_MONTSERRAT_20 1 #define LV_FONT_MONTSERRAT_22 1 #define LV_FONT_MONTSERRAT_24 1 #define LV_FONT_MONTSERRAT_26 1 #define LV_FONT_MONTSERRAT_28 1 #define LV_FONT_MONTSERRAT_30 1 #define LV_FONT_MONTSERRAT_32 1 #define LV_FONT_MONTSERRAT_34 1 #define LV_FONT_MONTSERRAT_36 1 #define LV_FONT_MONTSERRAT_38 1 #define LV_FONT_MONTSERRAT_40 1 #define LV_FONT_MONTSERRAT_42 1 #define LV_FONT_MONTSERRAT_44 1 #define LV_FONT_MONTSERRAT_46 1 #define LV_FONT_MONTSERRAT_48 1
如果工程中有用到相应的字库,则需要将其开启,否则会出现报错。
⑤开启/关闭官方例程
/*Show some widget*/ #define LV_USE_DEMO_WIDGETS 1 #if LV_USE_DEMO_WIDGETS #define LV_DEMO_WIDGETS_SLIDESHOW 1 #endif /*Demonstrate the usage of encoder and keyboard*/ #define LV_USE_DEMO_KEYPAD_AND_ENCODER 1 /*Benchmark your system*/ #define LV_USE_DEMO_BENCHMARK 1 /*Stress test for LVGL*/ #define LV_USE_DEMO_STRESS 1 /*Music player demo*/ #define LV_USE_DEMO_MUSIC 1 #if LV_USE_DEMO_MUSIC # define LV_DEMO_MUSIC_SQUARE 1 # define LV_DEMO_MUSIC_LANDSCAPE 1 # define LV_DEMO_MUSIC_ROUND 1 # define LV_DEMO_MUSIC_LARGE 1 # define LV_DEMO_MUSIC_AUTO_PLAY 1 #endif
上述代码中,不同的宏定义可以控制相应的LVGL例程,当它们置1时,表示开启例程。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040860/viewspace-3117996/ ,如需转载,请注明出处,否则将追究法律责任。