2.7. 从 LVGL GUI 仿真工程开始

LVGL GUI 仿真工程提供了 PikaScript 和 LVGL 进行联合仿真的实验环境。

可以在 PC 上,使用 Visual Studio 进行 GUI 的仿真。

2.7.1. 获取工程

http://pikascript.com/

在 PikaScript 官网的工程生成器中选择 lvgl-vs-simu,这是一个 Visual Studio 的仿真工程。

这个工程是从 LVGL 官方的 Visual Studio 仿真工程 中分支而来的。

_images/image-20220619174705166.png

点击生成工程,等待大概 1 分钟左右。

_images/image-20220619174908845.png

解压工程后打开 LVGL.Simulator.sln

_images/image-20220619175250783.png

直接开始编译运行

_images/image-20220619175332172.png

可以看到已经成功启动了 lvgl 的模拟器

_images/image-20220619175456110.png

2.7.2. 使用 Python 编程

工程运行的 Python 文件在 LVGL.Simulator/pikascript/main.py 中,建议用 VSCode 编辑 Python 文件。

_images/image-20220619175630362.png

main.py 中的代码如下所示,工程在启动后就会运行这个 main.py

  1. # main.py
  2. import pika_lvgl as lv
  3. import PikaStdLib
  4. mem = PikaStdLib.MemChecker()
  5. # Create an Arc
  6. arc = lv.arc(lv.scr_act())
  7. arc.set_end_angle(200)
  8. arc.set_size(150, 150)
  9. arc.center()
  10. print('mem used max: %0.2f kB' % (mem.getMax()))
  11. print('mem used now: %0.2f kB' % (mem.getNow()))

更多示例代码

可以在 /pikascript/examples/lvgl 文件夹中看到更多的示例代码。

_images/image-20220619175945030.png

比如可以将 lv_callback1.py 复制到 main.py 中。

  1. # lv_callback1.py
  2. import pika_lvgl as lv
  3. import PikaStdLib
  4. mem = PikaStdLib.MemChecker()
  5. def event_cb_1(evt):
  6. print('in evt1')
  7. print('mem used now: %0.2f kB' % (mem.getNow()))
  8. def event_cb_2(evt):
  9. print('in evt2')
  10. print('mem used now: %0.2f kB' % (mem.getNow()))
  11. btn1 = lv.btn(lv.scr_act())
  12. btn1.align(lv.ALIGN.TOP_MID, 0, 10)
  13. btn2 = lv.btn(lv.scr_act())
  14. btn2.align(lv.ALIGN.TOP_MID, 0, 50)
  15. btn1.add_event_cb(event_cb_1, lv.EVENT.CLICKED, 0)
  16. btn2.add_event_cb(event_cb_2, lv.EVENT.CLICKED, 0)
  17. print('mem used max: %0.2f kB' % (mem.getMax()))
  18. print('mem used now: %0.2f kB' % (mem.getNow()))

在替换 main.py 后,运行 PikaScript 的预编译器

_images/image-20220619180151300.png

然后再开始运行

_images/image-20220619180208847.png

这个例子中可以点击按钮然后查看输出。

_images/image-20220619180255030.png

2.7.3. 常见问题

如果提示缺少一些函数,则需要手动添加一下参与编译的文件

对 pikascript/pikascript-api 和 pikascript/pikascript-lib 右键然后点击 “包括在项目中”,再重新编译即可。

_images/image-20220619180512784.png