跳到主要内容

代码移植

TL;DR

  • generated 目录下生成的代码复制到你的项目中,并调用 setupUI() 来设置用户界面。
  • 如有需要,将 SDK 代码复制到你的项目中。
  • 如有需要,将dummy代码替换为适用于你项目的实际代码。

概述

anyui 主要用于用户界面设计,用户界面代码应与底层硬件以及像 keil 等工具无关。

不过,anyui 提供的不只是用户界面代码。它还提供了一个SDK,你可以利用并扩展该 SDK 来管理屏幕以及与底层硬件进行通信。

移植

用户界面代码

所有的用户界面代码都生成在 {root}/generated 文件夹下,其中包括生成的屏幕以及经过转换的图像、字体和 Lottie 动画。 这些代码是自动生成的,因此请勿手动修改。

SDK

SDK 代码位于 {root}/sdk 文件夹中,它为屏幕管理和与底层硬件通信提供了实用工具。 你可以扩展该 SDK 以满足特定需求。

注意

请注意,我们可能会在未来的版本中更新 SDK 代码以提供更多功能,若有冲突,你需要处理好与你自己所做修改之间的冲突。

dummy代码

dummy代码位于 {root}/simulator/dummy.c 中,它为 SDK 提供了一个占位实现,你需要将其替换为适用于你设备的实际实现。

dummy代码包括:

  • 处理从用户界面发送的通信命令。
  • 为外部存储设备实现文件系统驱动(如果你需要使用外部图像文件作为图像源)。
  • 用于时间更新和电池状态更新的定时器(这仅用于演示,你可以用实际实现替换它,或者直接移除)。

lv_conf.h

你应为设备镜像准备一份自己的 lv_conf.h 文件,该文件至少应包含以下内容:

  /*
* Here below are required
*/
#define LV_HOR_RES_MAX (?) // Horizontal resolution
#define LV_VER_RES_MAX (?) // Vertical resolution
#define LV_COLOR_DEPTH 16
/*Size of the memory available for 'lv_mem_alloc()' in bytes (>= 2kB)*/
#define LV_MEM_SIZE (?) // Memory size in bytes

/*
* Here below are optional or as needed
*/
#define LV_USE_LOG 1 // Enable log

#define LV_USE_FS_STDIO 1 // Enable file system
#define LV_USE_PNG 1 // Enable PNG decoder
#define LV_USE_JPEG 1 // Enable JPEG decoder
#define LV_USE_BMP 1 // Enable BMP decoder
#define LV_USE_GIF 1 // Enable GIF decoder

#define LV_USE_BTN 1 // Enable button
#define LV_USE_IMG 1 // Enable image
#define LV_USE_LABEL 1 // Enable label
// others as needed

/*
* Here below should not be defined for device image
*;
//#define USE_SIMULATOR