Quellcode durchsuchen

add:新增Air8000系列搭配AirLCD_1010使用exeasyui开发demo

江访 vor 1 Monat
Ursprung
Commit
c7cfa951eb
19 geänderte Dateien mit 1525 neuen und 0 gelöschten Zeilen
  1. 1 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_customer_font_drv.lua
  2. 87 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_default_font_drv.lua
  3. 90 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_gtfont_drv.lua
  4. 90 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_hzfont_drv.lua
  5. BIN
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/1.jpg
  6. BIN
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/2.jpg
  7. BIN
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/3.jpg
  8. BIN
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/4.jpg
  9. BIN
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/5.jpg
  10. BIN
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/logo.jpg
  11. 101 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/main.lua
  12. 197 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/readme.md
  13. 1 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/tp_key_drv/key_drv.lua
  14. 284 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/component_page.lua
  15. 147 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/default_font_page.lua
  16. 186 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/gtfont_page.lua
  17. 128 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/home_page.lua
  18. 177 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/hzfont_page.lua
  19. 36 0
      module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/ui_main.lua

+ 1 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_customer_font_drv.lua

@@ -0,0 +1 @@
+-- hw_customer_font_drv是用户外部自定义外部点阵字体、lcd显示驱动配置和tp触摸驱动配置的驱动配置文件,目前exeasyui自定义字体功能正在开发中。

+ 87 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_default_font_drv.lua

@@ -0,0 +1,87 @@
+--[[
+@module  hw_default_font_drv
+@summary 默认字体、lcd和tp驱动模块,使用内置12号点阵字体
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为默认字体、lcd和tp驱动模块,核心业务逻辑为:
+1、使用lcd内核固件中自带的12号中文字体;
+2、根据配置的字体、lcd和tp参数,初始化exEasyUI默认使用的字体、硬件显示和触摸;
+3、提供无需外部硬件的字体显示能力;
+
+本文件的对外接口有0个:
+1、require加载后自动执行初始化;
+
+@api ui.hw_init(config)
+@summary 初始化exEasyUI硬件系统
+@table config 硬件配置参数表,包含LCD配置和触摸配置
+@field lcd_config table LCD显示配置参数
+@field tp_config table 触摸屏配置参数
+@return nil
+
+@usage
+
+]]
+
+-- 使用默认12号中文字体初始化exEasyUI硬件
+ui.hw_init({
+    -- lcd_config参数填写可以参考合宙exlcd显示扩展库exlcd.init(param)接口说明:https://docs.openluat.com/osapi/ext/exlcd/#31-exlcdinitparam
+    lcd_config = {
+        lcd_model = "AirLCD_1010", -- LCD型号
+        -- pin_vcc = 24,                  -- 供电引脚,使用GPIO控制屏幕供电可配置
+        pin_rst = 36,              -- 复位引脚
+        pin_pwr = 1,               -- 背光控制引脚GPIO ID号
+        pin_pwm = 0,               -- 背光控制引脚PWM D号
+        port = lcd.HWID_0,         -- 驱动端口
+        -- pin_dc = 0xFF,          -- lcd数据/命令选择引脚GPIO ID号,使用lcd 专用 SPI 接口 lcd.HWID_0不需要填此参数,使用通用SPI接口需要赋值
+        direction = 0,             -- lcd屏幕方向 0:0° 1:90° 2:180° 3:270°,屏幕方向和分辨率保存一致
+        w = 320,                   -- lcd 水平分辨率
+        h = 480,                   -- lcd 竖直分辨率
+        xoffset = 0,               -- x偏移(不同屏幕ic 不同屏幕方向会有差异)
+        yoffset = 0,               -- y偏移(不同屏幕ic 不同屏幕方向会有差异)
+        sleepcmd = 0X10,           -- 睡眠命令,默认0X10
+        wakecmd = 0X11,            -- 唤醒命令,默认0X11
+        -- bus_speed = 50*1000*1000,                            -- SPI总线速度,不填默认50M,若速率要求更高需要进行设置
+        -- interface_mode = lcd.WIRE_4_BIT_8_INTERFACE_I,       -- lcd模式,默认lcd.WIRE_4_BIT_8_INTERFACE_I
+        -- direction0 = {0x36,0x00},                            -- 0°方向的命令,(不同屏幕ic会有差异)
+        -- direction90 = {0x36,0x60},                           -- 90°方向的命令,(不同屏幕ic会有差异)
+        -- direction180 ={0x36,0xc0} ,                          -- 180°方向的命令,(不同屏幕ic会有差异)
+        -- direction270 = {0x36,0xA0},                          -- 270°方向的命令,(不同屏幕ic会有差异)
+        -- hbp = nil,                                           -- 水平后廊
+        -- hspw = nil,                                          -- 水平同步脉冲宽度
+        -- hfp = 0,                                             -- 水平前廊
+        -- vbp = 0,                                             -- 垂直后廊
+        -- vspw = 0,                                            -- 垂直同步脉冲宽度
+        -- vfp = 0,                                             -- 垂直前廊
+        -- initcmd = nil,                                       -- 自定义屏幕初始化命令表
+        -- flush_rate = nil,                                    -- 刷新率
+        -- spi_dev = nil,                                       -- spi设备,当port = "device"时有效,当port ≠ "device"时可不填或者填nil
+        -- init_in_service = false,                             -- 允许初始化在lcd service里运行,在后台初始化LCD,默认是false,Air8000/G/W/T/A、Air780EHM/EGH/EHV 支持填true,可加快初始化速度,默认SPI总线速度80M
+    },
+
+    -- tp_config参数填写可以参考合宙extp触摸扩展库以下三个接口说明:https://docs.openluat.com/osapi/ext/extp/#41-extpinitparam
+    -- 按extp.init(param)接口说明填写tp_model、i2c_id、pin_rst、pin_int参数
+    -- 按extp.set_publish_enabled(msg_type, enabled)接口说明和实际需求填写message_enabled{}列表内参数
+    -- 按extp.set_swipe_threshold(threshold)接口说明填写swipe_threshold和long_press_threshold参数
+    tp_config = {
+        tp_model = "AirLCD_1010", -- 触摸芯片/设备型号
+        i2c_id = 1,               -- I2C总线ID
+        pin_rst = 0xFF,           -- 触摸芯片复位引脚(AirLCD_1010上没有引出该引脚)
+        pin_int = gpio.WAKEUP0,             -- 触摸芯片中断引脚
+        -- @param message_enabled 消息类型 ("ALL", "RAW_DATA", "TOUCH_DOWN", "MOVE_X", "MOVE_Y", "SWIPE_LEFT", "SWIPE_RIGHT", "SWIPE_UP", "SWIPE_DOWN", "SINGLE_TAP", "LONG_PRESS")
+        message_enabled = {
+            TOUCH_DOWN = true,      -- 启用按下检测
+            MOVE_X = true,          -- 启用横向滑动
+            MOVE_Y = true,          -- 启用纵向滑动
+            SWIPE_LEFT = true,      -- 启用左滑手势
+            SWIPE_RIGHT = true,     -- 启用右滑手势
+            SWIPE_UP = true,        -- 启用上滑手势
+            SWIPE_DOWN = true,      -- 启用下滑手势
+            SINGLE_TAP = true,      -- 启用点击手势
+            LONG_PRESS = false      -- 禁用长按手势
+        },
+        swipe_threshold = 10,       -- 设置滑动阈值
+        long_press_threshold = 2000 -- 设置长按阈值(毫秒)
+    }
+})

+ 90 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_gtfont_drv.lua

@@ -0,0 +1,90 @@
+--[[
+@module  hw_gtfont_drv
+@summary GTFont矢量字体驱动模块,使用AirFONTS_1000配件板
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为GTFont矢量字体、lcd和tp驱动模块,核心业务逻辑为:
+1、使用gtfont核心库驱动AirFONTS_1000矢量字库配件板;
+2、根据配置的字体、lcd和tp参数,初始化exEasyUI默认使用的字体、硬件显示和触摸;
+3、提供高质量矢量字体显示能力;
+
+本文件的对外接口有0个:
+1、require加载后自动执行初始化;
+
+@api ui.hw_init(config)
+@summary 初始化exEasyUI硬件系统
+@table config 硬件配置参数表,包含字体配置、LCD配置和触摸配置
+@field font_config table 字体配置参数
+@field lcd_config table LCD显示配置参数
+@field tp_config table 触摸屏配置参数
+@return nil
+
+@usage
+
+]]
+
+-- 使用gtfont矢量字库初始化exEasyUI硬件
+ui.hw_init({
+    font_config = { type = "gtfont", spi = { id = 1, cs = 12 }, size = 32 },
+
+    -- lcd_config参数填写可以参考合宙exlcd显示扩展库exlcd.init(param)接口说明:https://docs.openluat.com/osapi/ext/exlcd/#31-exlcdinitparam
+    lcd_config = {
+        lcd_model = "AirLCD_1010", -- LCD型号
+        -- pin_vcc = 24,                  -- 供电引脚,使用GPIO控制屏幕供电可配置
+        pin_rst = 36,              -- 复位引脚
+        pin_pwr = 1,               -- 背光控制引脚GPIO ID号
+        pin_pwm = 0,               -- 背光控制引脚PWM D号
+        port = lcd.HWID_0,         -- 驱动端口
+        -- pin_dc = 0xFF,          -- lcd数据/命令选择引脚GPIO ID号,使用lcd 专用 SPI 接口 lcd.HWID_0不需要填此参数,使用通用SPI接口需要赋值
+        direction = 0,             -- lcd屏幕方向 0:0° 1:90° 2:180° 3:270°,屏幕方向和分辨率保存一致
+        w = 320,                   -- lcd 水平分辨率
+        h = 480,                   -- lcd 竖直分辨率
+        xoffset = 0,               -- x偏移(不同屏幕ic 不同屏幕方向会有差异)
+        yoffset = 0,               -- y偏移(不同屏幕ic 不同屏幕方向会有差异)
+        sleepcmd = 0X10,           -- 睡眠命令,默认0X10
+        wakecmd = 0X11,            -- 唤醒命令,默认0X11
+        -- bus_speed = 50*1000*1000,                            -- SPI总线速度,不填默认50M,若速率要求更高需要进行设置
+        -- interface_mode = lcd.WIRE_4_BIT_8_INTERFACE_I,       -- lcd模式,默认lcd.WIRE_4_BIT_8_INTERFACE_I
+        -- direction0 = {0x36,0x00},                            -- 0°方向的命令,(不同屏幕ic会有差异)
+        -- direction90 = {0x36,0x60},                           -- 90°方向的命令,(不同屏幕ic会有差异)
+        -- direction180 ={0x36,0xc0} ,                          -- 180°方向的命令,(不同屏幕ic会有差异)
+        -- direction270 = {0x36,0xA0},                          -- 270°方向的命令,(不同屏幕ic会有差异)
+        -- hbp = nil,                                           -- 水平后廊
+        -- hspw = nil,                                          -- 水平同步脉冲宽度
+        -- hfp = 0,                                             -- 水平前廊
+        -- vbp = 0,                                             -- 垂直后廊
+        -- vspw = 0,                                            -- 垂直同步脉冲宽度
+        -- vfp = 0,                                             -- 垂直前廊
+        -- initcmd = nil,                                       -- 自定义屏幕初始化命令表
+        -- flush_rate = nil,                                    -- 刷新率
+        -- spi_dev = nil,                                       -- spi设备,当port = "device"时有效,当port ≠ "device"时可不填或者填nil
+        -- init_in_service = false,                             -- 允许初始化在lcd service里运行,在后台初始化LCD,默认是false,Air8000/G/W/T/A、Air780EHM/EGH/EHV 支持填true,可加快初始化速度,默认SPI总线速度80M
+    },
+
+    -- tp_config参数填写可以参考合宙extp触摸扩展库以下三个接口说明:https://docs.openluat.com/osapi/ext/extp/#41-extpinitparam
+    -- 按extp.init(param)接口说明填写tp_model、i2c_id、pin_rst、pin_int参数
+    -- 按extp.set_publish_enabled(msg_type, enabled)接口说明和实际需求填写message_enabled{}列表内参数
+    -- 按extp.set_swipe_threshold(threshold)接口说明填写swipe_threshold和long_press_threshold参数
+    tp_config = {
+        tp_model = "AirLCD_1010", -- 触摸芯片/设备型号
+        i2c_id = 1,               -- I2C总线ID
+        pin_rst = 0xFF,           -- 触摸芯片复位引脚(AirLCD_1010上没有引出该引脚)
+        pin_int = 22,             -- 触摸芯片中断引脚
+        -- @param message_enabled 消息类型 ("ALL", "RAW_DATA", "TOUCH_DOWN", "MOVE_X", "MOVE_Y", "SWIPE_LEFT", "SWIPE_RIGHT", "SWIPE_UP", "SWIPE_DOWN", "SINGLE_TAP", "LONG_PRESS")
+        message_enabled = {
+            TOUCH_DOWN = true,      -- 启用按下检测
+            MOVE_X = true,          -- 启用横向滑动
+            MOVE_Y = true,          -- 启用纵向滑动
+            SWIPE_LEFT = true,      -- 启用左滑手势
+            SWIPE_RIGHT = true,     -- 启用右滑手势
+            SWIPE_UP = true,        -- 启用上滑手势
+            SWIPE_DOWN = true,      -- 启用下滑手势
+            SINGLE_TAP = true,      -- 启用点击手势
+            LONG_PRESS = false      -- 禁用长按手势
+        },
+        swipe_threshold = 10,       -- 设置滑动阈值
+        long_press_threshold = 2000 -- 设置长按阈值(毫秒)
+    }
+})

+ 90 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/hw_drv/hw_hzfont_drv.lua

@@ -0,0 +1,90 @@
+--[[
+@module  hw_hzfont_drv
+@summary HZFont矢量字体驱动模块,使用合宙内置矢量字库
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为HZFont矢量字体、lcd和tp驱动模块,核心业务逻辑为:
+1、使用Air8000 V2020版本以上14号固件或114号固件内置的hzfont合宙矢量字库;
+2、根据配置的字体、lcd和tp参数,初始化exEasyUI默认使用的字体、硬件显示和触摸;
+3、提供动态字体大小调整和高质量字体显示能力;
+
+本文件的对外接口有0个:
+1、require加载后自动执行初始化;
+
+@api ui.hw_init(config)
+@summary 初始化exEasyUI硬件系统
+@table config 硬件配置参数表,包含字体配置、LCD配置和触摸配置
+@field font_config table 字体配置参数
+@field lcd_config table LCD显示配置参数
+@field tp_config table 触摸屏配置参数
+@return nil
+
+@usage
+
+]]
+
+-- 使用Air8000 V2020版本以上14号固件内置的hzfont合宙矢量字库初始化exEasyUI硬件
+ui.hw_init({
+    font_config = { type = "hzfont", size = 24, antialias = -1 }, -- 默认-1,表示自动抗锯齿
+
+    -- lcd_config参数填写可以参考合宙exlcd显示扩展库exlcd.init(param)接口说明:https://docs.openluat.com/osapi/ext/exlcd/#31-exlcdinitparam
+    lcd_config = {
+        lcd_model = "AirLCD_1010", -- LCD型号
+        -- pin_vcc = 24,           -- 供电引脚,使用GPIO控制屏幕供电可配置
+        pin_rst = 36,              -- 复位引脚
+        pin_pwr = 1,               -- 背光控制引脚GPIO ID号
+        pin_pwm = 0,               -- 背光控制引脚PWM D号
+        port = lcd.HWID_0,         -- 驱动端口
+        -- pin_dc = 0xFF,          -- lcd数据/命令选择引脚GPIO ID号,使用lcd 专用 SPI 接口 lcd.HWID_0不需要填此参数,使用通用SPI接口需要赋值
+        direction = 0,             -- lcd屏幕方向 0:0° 1:90° 2:180° 3:270°,屏幕方向和分辨率保存一致
+        w = 320,                   -- lcd 水平分辨率
+        h = 480,                   -- lcd 竖直分辨率
+        xoffset = 0,               -- x偏移(不同屏幕ic 不同屏幕方向会有差异)
+        yoffset = 0,               -- y偏移(不同屏幕ic 不同屏幕方向会有差异)
+        sleepcmd = 0X10,           -- 睡眠命令,默认0X10
+        wakecmd = 0X11,            -- 唤醒命令,默认0X11
+        -- bus_speed = 50*1000*1000,                            -- SPI总线速度,不填默认50M,若速率要求更高需要进行设置
+        -- interface_mode = lcd.WIRE_4_BIT_8_INTERFACE_I,       -- lcd模式,默认lcd.WIRE_4_BIT_8_INTERFACE_I
+        -- direction0 = {0x36,0x00},                            -- 0°方向的命令,(不同屏幕ic会有差异)
+        -- direction90 = {0x36,0x60},                           -- 90°方向的命令,(不同屏幕ic会有差异)
+        -- direction180 ={0x36,0xc0} ,                          -- 180°方向的命令,(不同屏幕ic会有差异)
+        -- direction270 = {0x36,0xA0},                          -- 270°方向的命令,(不同屏幕ic会有差异)
+        -- hbp = nil,                                           -- 水平后廊
+        -- hspw = nil,                                          -- 水平同步脉冲宽度
+        -- hfp = 0,                                             -- 水平前廊
+        -- vbp = 0,                                             -- 垂直后廊
+        -- vspw = 0,                                            -- 垂直同步脉冲宽度
+        -- vfp = 0,                                             -- 垂直前廊
+        -- initcmd = nil,                                       -- 自定义屏幕初始化命令表
+        -- flush_rate = nil,                                    -- 刷新率
+        -- spi_dev = nil,                                       -- spi设备,当port = "device"时有效,当port ≠ "device"时可不填或者填nil
+        -- init_in_service = false,                             -- 允许初始化在lcd service里运行,在后台初始化LCD,默认是false,Air8000/G/W/T/A、Air780EHM/EGH/EHV 支持填true,可加快初始化速度,默认SPI总线速度80M
+    },
+
+    -- tp_config参数填写可以参考合宙extp触摸扩展库以下三个接口说明:https://docs.openluat.com/osapi/ext/extp/#41-extpinitparam
+    -- 按extp.init(param)接口说明填写tp_model、i2c_id、pin_rst、pin_int参数
+    -- 按extp.set_publish_enabled(msg_type, enabled)接口说明和实际需求填写message_enabled{}列表内参数
+    -- 按extp.set_swipe_threshold(threshold)接口说明填写swipe_threshold和long_press_threshold参数
+    tp_config = {
+        tp_model = "AirLCD_1010", -- 触摸芯片/设备型号
+        i2c_id = 1,               -- I2C总线ID
+        pin_rst = 0xFF,           -- 触摸芯片复位引脚(AirLCD_1010上没有引出该引脚)
+        pin_int = 22,             -- 触摸芯片中断引脚
+        -- @param message_enabled 消息类型 ("ALL", "RAW_DATA", "TOUCH_DOWN", "MOVE_X", "MOVE_Y", "SWIPE_LEFT", "SWIPE_RIGHT", "SWIPE_UP", "SWIPE_DOWN", "SINGLE_TAP", "LONG_PRESS")
+        message_enabled = {
+            TOUCH_DOWN = true,      -- 启用按下检测
+            MOVE_X = true,          -- 启用横向滑动
+            MOVE_Y = true,          -- 启用纵向滑动
+            SWIPE_LEFT = true,      -- 启用左滑手势
+            SWIPE_RIGHT = true,     -- 启用右滑手势
+            SWIPE_UP = true,        -- 启用上滑手势
+            SWIPE_DOWN = true,      -- 启用下滑手势
+            SINGLE_TAP = true,      -- 启用点击手势
+            LONG_PRESS = false      -- 禁用长按手势
+        },
+        swipe_threshold = 10,       -- 设置滑动阈值
+        long_press_threshold = 2000 -- 设置长按阈值(毫秒)
+    }
+})

BIN
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/1.jpg


BIN
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/2.jpg


BIN
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/3.jpg


BIN
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/4.jpg


BIN
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/5.jpg


BIN
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/images/logo.jpg


+ 101 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/main.lua

@@ -0,0 +1,101 @@
+--[[
+@module  main
+@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本demo演示的核心功能为:
+1、加载exeasyui扩展库;
+2、根据选择的字体类型驱动,进行显示、触摸硬件以及字体的初始化,
+   支持默认字体、外部矢量字库、内部软件矢量字库和外部自定义点阵字库四选一;
+3、用户界面主循环,实现多页面切换和触摸事件处理;
+4、系统看门狗配置,确保系统稳定运行;
+
+更多说明参考本目录下的readme.md文件
+]]
+
+--[[
+必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
+PROJECT:项目名,ascii string类型
+        可以随便定义,只要不使用,就行
+VERSION:项目版本号,ascii string类型
+        如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
+            X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
+            因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
+        如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
+]]
+
+-- main.lua - 程序入口文件
+
+-- 定义项目名称和版本号
+PROJECT = "ui_demo" -- 项目名称
+VERSION = "001.000.000"   -- 版本号
+
+-- 在日志中打印项目名和项目版本号
+log.info("ui_demo", PROJECT, VERSION)
+
+-- 设置日志输出风格为样式2(建议调试时开启)
+-- log.style(2)
+
+-- 如果内核固件支持wdt看门狗功能,此处对看门狗进行初始化和定时喂狗处理
+-- 如果脚本程序死循环卡死,就会无法及时喂狗,最终会自动重启
+if wdt then
+    --配置喂狗超时时间为9秒钟
+    wdt.init(9000)
+    --启动一个循环定时器,每隔3秒钟喂一次狗
+    sys.timerLoopStart(wdt.feed, 3000)
+end
+
+
+-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
+-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
+-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
+-- 启动errDump日志存储并且上传功能,600秒上传一次
+-- if errDump then
+--     errDump.config(true, 600)
+-- end
+
+
+-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
+-- 可以使用合宙的iot.openluat.com平台进行远程升级
+-- 也可以使用客户自己搭建的平台进行远程升级
+-- 远程升级的详细用法,可以参考fota的demo进行使用
+
+
+-- 启动一个循环定时器
+-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
+-- 方便分析内存使用是否有异常
+-- sys.timerLoopStart(function()
+--     log.info("mem.lua", rtos.meminfo())
+--     log.info("mem.sys", rtos.meminfo("sys"))
+-- end, 3000)
+
+
+-- 必须加载才能启用exeasyui的功能
+ui = require("exeasyui")
+
+
+-- 加载lcd、tp和字库驱动管理功能模块,有以下四种:
+-- 1、使用lcd内核固件中自带的12号中文字体的hw_default_font_drv,并按lcd显示驱动配置和tp触摸驱动配置进行初始化
+-- 2、使用hzfont核心库驱动内核固件中支持的软件矢量字库的hw_hzfont_drv.lua,并按lcd显示驱动配置和tp触摸驱动配置进行初始化
+-- 3、使用gtfont核心库驱动AirFONTS_1000矢量字库配件板的hw_gtfont_drv.lua,并按lcd显示驱动配置和tp触摸驱动配置进行初始化
+-- 4、使用自定义字体的hw_customer_font_drv(目前开发中)
+-- 最新情况可查看模组选型手册中对应型号的固件列表内,支持的核心库是否包含lcd、tp、12号中文、gtfont、hzfont,链接https://docs.openluat.com/air8000/common/product/
+-- 目前exeasyui V1.7.0版本支持使用已经实现的四种功能中的一种进行初始化,同时支持多种字体初始化功能正在开发中
+require("hw_default_font_drv")
+-- require("hw_hzfont_drv")
+-- require("hw_gtfont_drv")
+-- require("hw_customer_font_drv")开发中
+
+
+-- 加载exeassyui扩展库实现的用户界面功能模块
+-- 实现多页面切换、触摸事件分发和界面渲染功能
+-- 包含主页、组件演示页、默认字体演示页、HZfont演示页、GTFont演示页和自定义字体演示页
+require("ui_main")
+
+
+-- 用户代码已结束
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行

+ 197 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/readme.md

@@ -0,0 +1,197 @@
+# exEasyUI 演示
+
+## 一、功能模块介绍
+
+### 1.1 核心主程序模块
+
+1. **main.lua** - 主程序入口,负责系统初始化和任务调度
+2. **ui_main.lua** - exeasyui 主程序,负责执行exeasyui的任务调度
+
+### 1.2 显示页面模块
+
+1. **home_page.lua** - 主页模块,提供应用入口和导航功能
+2. **component_page.lua** - UI 组件演示模块
+3. **default_font_page.lua** - 默认字体演示模块
+4. **gtfont_page.lua** - GTFont 矢量字体演示模块
+5. **hzfont_page.lua** - HZFont 矢量字体演示模块
+
+### 1.3 硬件驱动模块
+
+1. **hw_default_font_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和默认字体驱动模块,使用内置 12 号点阵字体
+2. **hw_gtfont_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和GTFont 矢量字库驱动模块
+3. **hw_hzfont_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和HZFont 矢量字体驱动模块
+4. **hw_customer_font_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和自定义外部字体驱动模块(开发中)
+
+当前演示的exeasyui V1.7.0版本还不支持同时启用多种字体,仅支持选择一种字体初始化,同时启用多种字体功能正在开发中
+
+使用 HZfont 需要使用 V2020 版本以上的 14 号或者114号固件,且 14 号或114号固件仅支持 HZfont,不支持内置12号中文字体和GTfont核心库
+
+## 二、演示效果
+
+<table>
+<tr>
+<td>主页<br/></td><td>组件演示页1<br/></td><td>组件演示页2<br/></td><td>默认字体页<br/></td><td>HZFont页<br/></td><td>GTFont页<br/></td></tr>
+<tr>
+<td><img src="https://docs.openluat.com/cdn/image/exeasyui_home_gage.png" width="80" /><br/></td><td><img src="https://docs.openluat.com/cdn/image/exeasyui_component_page_1.png" width="80" /><br/></td><td><img src="https://docs.openluat.com/cdn/image/exeasyui_component_page_2.png" width="80" /><br/></td><td><img src="https://docs.openluat.com/cdn/image/exeasyui_default_font_page.png" width="80" /><br/></td><td><img src="https://docs.openluat.com/cdn/image/exeasyui_hzfont_page.png" width="80" /><br/></td><td><img src="https://docs.openluat.com/cdn/image/exeasyui_gtfont_page.png" width="80" /><br/></td></tr>
+</table>
+
+
+## 三、演示硬件环境
+
+### 3.1 硬件清单
+
+- Air8000核心板 × 1
+- AirLCD_1010 触摸配件板 × 1
+- GTFont 矢量字库,使用的是 AirFONTS_1000 配件板 × 1
+- 母对母杜邦线 × 17,杜邦线太长的话,会出现 spi 通信不稳定的现象;
+- TYPE-C 数据线 × 1
+- Air8000核心板和 AirLCD_1010 配件板以及 AirFONTS_1000 配件板的硬件接线方式为
+
+  - Air8000核心板通过 TYPE-C USB 口供电(核心板背面的开关拨到 USB ON 一端,正面开关拨到 供电 一端),此种供电方式下,VDD_EXT 和 VBAT 引脚为 3.3V,可以直接给 AirLCD_1010 配件板和 AirFONTS_1000 配件板供电;
+  - 为了演示方便,所以 Air8000核心板上电后直接通过 VBAT 引脚给 AirLCD_1010 配件板供电,通过VDD_EXT引脚给 AirFONTS_1000 配件板供电;
+  - 客户在设计实际项目时,一般来说,需要通过一个 GPIO 来控制 LDO 给配件板供电,这样可以灵活地控制配件板的供电,可以使项目的整体功耗降到最低;
+
+### 3.2 接线配置
+
+#### 3.2.1 显示屏接线
+
+<table>
+<tr> <td>Air8000核心板</td><td>AirLCD_1010配件板</td></tr>
+<tr> <td>LCD_CLK</td><td>SCLK/CLK</td></tr>
+<tr> <td>LCD_CS</td><td>CS</td></tr>
+<tr> <td>LCD_RST</td><td>RES/RST</td></tr>
+<tr> <td>LCD_SDA</td><td>SDA/MOS</td></tr>
+<tr> <td>LCD_RS</td><td>DC/RS</td></tr>
+<tr> <td>GPIO1</td><td>BLK</td></tr>
+<tr> <td>VBAT</td><td>VCC</td></tr>
+<tr> <td>I2C1_SCL</td><td>SCL</td></tr>
+<tr> <td>I2C1_SDA</td><td>SDA</td></tr>
+<tr> <td>WAKEUP0</td><td>INT</td></tr>
+<tr> <td>GND</td><td>GND</td></tr>
+</table>
+
+#### 3.2.2 GTFont 字库接线
+
+<table>
+<tr> <td>Air8000核心板</td><td>AirFONTS_1000配件板</td></tr>
+<tr> <td>SPI0_CS</td><td>CS</td></tr>
+<tr> <td>SPI0_MISO</td><td>MISO</td></tr>
+<tr> <td>SPI0_MOSI</td><td>MOSI</td></tr>
+<tr> <td>SPI0_CLK</td><td>CLK</td></tr>
+<tr> <td>VDD_EXT</td><td>VCC</td></tr>
+<tr> <td>GND</td><td>GND</td></tr>
+</table>
+
+#### 3.2.3 接线图
+
+![](https://docs.openLuat.com/cdn/image/Air8000核心板_AirLCD_1010_AirFONTS_1000接线图.jpg)
+![](https://docs.openLuat.com/cdn/image/Air8000引脚定义背面图.png)
+
+## 四、演示软件环境
+
+### 4.1 开发工具
+
+- [Luatools下载调试工具](https://docs.openluat.com/air8000/luatos/common/download/) - 固件烧录和代码调试
+
+### 4.2 内核固件
+
+- [点击下载Air8000系列最新版本内核固件](https://docs.openluat.com/air8000/luatos/firmware/),demo所使用的是LuatOS-SoC_V2018_Air8000 1号固件
+
+使用 HZfont 需要使用 V2020 版本以上的 14 号固件或114号固件,且 14 号固件或114号固件仅支持 HZfont
+使用其他字体,demo 所使用的是 LuatOS-SoC_V2018 1 号固件
+
+## 五、演示核心步骤
+
+### 5.1 硬件准备
+
+1. 按照硬件接线表连接所有设备
+2. 如使用 GTFont,需要连接 AirFONTS_1000 配件板
+3. 通过 TYPE-C USB 口供电
+4. 检查所有接线无误
+
+### 5.2 软件配置
+
+在 `main.lua` 中配置系统参数:
+
+```lua
+-- 必须加载才能启用exeasyui的功能
+ui = require("exeasyui")
+
+-- 加载lcd、tp和字库驱动管理功能模块,有以下四种:
+-- 1、使用lcd内核固件中自带的12号中文字体的hw_default_font_drv,并按lcd显示驱动配置和tp触摸驱动配置进行初始化
+-- 2、使用hzfont核心库驱动内核固件中支持的软件矢量字库的hw_hzfont_drv.lua,并按lcd显示驱动配置和tp触摸驱动配置进行初始化
+-- 3、使用gtfont核心库驱动AirFONTS_1000矢量字库配件板的hw_gtfont_drv.lua,并按lcd显示驱动配置和tp触摸驱动配置进行初始化
+-- 4、使用自定义字体的hw_customer_font_drv(目前开发中)
+-- 最新情况可查看模组选型手册中对应型号的固件列表内,支持的核心库是否包含lcd、tp、12号中文、gtfont、hzfont,链接https://docs.openluat.com/air8000/common/product/
+-- 目前exeasyui V1.7.0版本支持使用已经实现的四种功能中的一种进行初始化,同时支持多种字体初始化功能正在开发中
+require("hw_default_font_drv")
+-- require("hw_hzfont_drv")
+-- require("hw_gtfont_drv")
+-- require("hw_customer_font_drv")开发中
+
+-- 加载exeassyui扩展库实现的用户界面功能模块
+-- 实现多页面切换、触摸事件分发和界面渲染功能
+-- 包含主页、组件演示页、默认字体演示页、HZfont演示页、GTFont演示页和自定义字体演示页
+require("ui_main")
+```
+
+### 5.3 屏幕参数配置
+
+在对应的驱动文件中根据实际硬件调整硬件参数:
+
+- **hw_default_font_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和默认字体驱动模块,使用内置 12 号点阵字体
+- **hw_gtfont_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和GTFont 矢量字库驱动模块
+- **hw_hzfont_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和HZFont 矢量字体驱动模块
+- **hw_customer_font_drv.lua** - lcd显示驱动配置、tp触摸驱动配置和自定义外部字体驱动模块(开发中)
+
+### 5.4 软件烧录
+
+1. 使用 Luatools 烧录对应型号的最新内核固件
+2. 下载并烧录本项目所有脚本文件
+3. 将图片文件随脚本文件一起烧录到脚本分区
+4. 设备自动重启后开始运行
+5. [点击查看Luatools 下载和详细使用](https://docs.openluat.com/air8000/common/Luatools/)
+
+### 5.5 功能测试
+
+#### 5.5.1 主页面操作
+
+1. 设备启动后显示主页面,包含四个功能按钮
+2. 查看系统标题和版本信息
+3. 点击各功能按钮进入对应演示页面
+
+#### 5.5.2 组件演示页面
+
+1. 测试进度条组件的动态更新
+2. 体验消息框的弹出和按钮响应
+3. 操作复选框查看状态变化
+4. 在输入框中输入文本测试
+5. 使用下拉框选择选项
+6. 查看图片轮播效果(如有图片文件)
+
+#### 5.5.3 字体演示页面
+
+1. **默认字体页**:查看固定 12 号字体的颜色和中英文显示
+2. **HZFont 页**:测试动态字体大小调整功能
+3. **GTFont 页**:体验多尺寸矢量字体显示效果
+4. 在各页面使用返回按钮回到主页
+
+### 5.6 预期效果
+
+- **系统启动**:正常初始化,显示主页面
+- **页面切换**:流畅的页面过渡效果
+- **组件交互**:所有 UI 组件响应灵敏
+- **字体显示**:各字体页面正常显示,动态调整功能正常
+- **触摸操作**:准确的触摸定位和事件响应
+
+### 5.7 故障排除
+
+1. **显示异常**:检查 LCD 接线,确认对应驱动文件中的硬件参数正确
+2. **触摸无响应**:检查 I2C 接线,确认触摸芯片型号配置正确
+3. **字体显示异常**:确认选择的字体驱动与硬件匹配
+4. **图片无法显示**:确认图片文件已正确烧录到指定路径
+5. **系统卡顿**:调整 `ui_main.lua` 中的刷新率参数
+
+## 六、扩展开发
+
+本演示 demo 所有接口都在 [exeasyUI UI 扩展库](https://docs.openluat.com/osapi/ext/exeasyui/)内有详细说明,如需实现更丰富的自定义功能可按接口说明实现。

+ 1 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/tp_key_drv/key_drv.lua

@@ -0,0 +1 @@
+-- 无触摸仅显示,通过按键方式进行UI交互的初始化方式正在开发中

+ 284 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/component_page.lua

@@ -0,0 +1,284 @@
+--[[
+@module  component_page
+@summary exEasyUI组件演示页面模块,展示各种UI组件的使用方法
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为组件演示页面功能模块,核心业务逻辑为:
+1、创建带上下滚动功能的演示窗口;
+2、展示进度条、消息框、按钮、复选框、输入框、下拉框、图片轮播等UI组件;
+3、演示组件的交互功能和事件处理;
+4、提供返回主页的导航功能;
+
+本文件的对外接口有1个:
+1、component_page.create(ui):创建组件演示页面;
+]]
+
+local component_page = {}
+
+--[[
+创建组件演示页面;
+
+@api component_page.create(ui)
+@summary 创建组件演示页面界面
+@table ui UI库对象
+@return table 组件演示窗口对象
+
+@usage
+-- 在子页面工厂中调用创建组件演示页面
+local component_page = require("component_page").create(ui)
+]]
+function component_page.create(ui)
+    local win = ui.window({ 
+        background_color = ui.COLOR_WHITE,
+        x = 0, y = 0, w = 320, h = 480
+    })
+    
+    -- 启用滚动
+    win:enable_scroll({
+        direction = "vertical",
+        content_height = 1000,
+        threshold = 10
+    })
+    
+    -- 标题
+    local title = ui.label({
+        x = 120, y = 25,
+        text = "组件演示页面",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    -- 返回按钮
+    local btn_back = ui.button({
+        x = 20, y = 20,
+        w = 60, h = 30,
+        text = "返回",
+        on_click = function()
+            win:back()
+        end
+    })
+    
+    -- ==================== 1. 进度条组件演示 ====================
+    local progress_label = ui.label({
+        x = 20, y = 70,
+        text = "1. 进度条组件:",
+        color = ui.COLOR_BLACK,
+        size = 14
+    })
+    
+    local progress_value = 0
+    local progress_bar = ui.progress_bar({
+        x = 20, y = 100,
+        w = 200, h = 26,
+        progress = progress_value
+    })
+    
+    local btn_progress = ui.button({
+        x = 230, y = 100,
+        w = 70, h = 26,
+        text = "+10%",
+        on_click = function()
+            progress_value = progress_value + 10
+            if progress_value > 100 then
+                progress_value = 0
+            end
+            progress_bar:set_progress(progress_value)
+            progress_bar:set_text("进度: " .. progress_value .. "%")
+        end
+    })
+    
+    -- ==================== 2. 消息框组件演示 ====================
+    local msgbox_label = ui.label({
+        x = 20, y = 140,
+        text = "2. 消息框组件:",
+        color = ui.COLOR_BLACK,
+        size = 14
+    })
+    
+    local btn_msgbox = ui.button({
+        x = 20, y = 170,
+        w = 120, h = 30,
+        text = "弹出消息框",
+        on_click = function()
+            local message_box = ui.message_box({
+                x = 40, y = 100,
+                w = 240, h = 150,
+                title = "提示",
+                message = "这是一个exEasyUI消息框演示",
+                buttons = {"确定", "取消"},
+                on_result = function(button_index)
+                    log.info("component_page", "点击了按钮:", button_index)
+                end
+            })
+            ui.add(message_box)
+        end
+    })
+    
+    -- ==================== 3. 复选框组件演示 ====================
+    local checkbox_label = ui.label({
+        x = 20, y = 220,
+        text = "3. 复选框组件:",
+        color = ui.COLOR_BLACK,
+        size = 14
+    })
+    
+    local checkbox1 = ui.check_box({
+        x = 20, y = 250,
+        text = "选项A",
+        checked = false,
+        on_change = function(checked)
+            log.info("component_page", "选项A:", checked)
+        end
+    })
+    
+    local checkbox2 = ui.check_box({
+        x = 120, y = 250,
+        text = "选项B",
+        checked = true,
+        on_change = function(checked)
+            log.info("component_page", "选项B:", checked)
+        end
+    })
+    
+    -- ==================== 4. 输入框组件演示 ====================
+    local input_label = ui.label({
+        x = 20, y = 300,
+        text = "4. 输入框组件:",
+        color = ui.COLOR_BLACK,
+        size = 14
+    })
+    
+    -- 普通文本输入框
+    local text_input = ui.input({
+        x = 20, y = 330,
+        w = 200, h = 30,
+        placeholder = "请输入文本...",
+        max_length = 20
+    })
+    
+    -- 密码输入框
+    local password_input = ui.input({
+        x = 20, y = 370,
+        w = 200, h = 30,
+        placeholder = "请输入密码...",
+        input_type = "password",
+        max_length = 16
+    })
+    
+    -- 数字输入框
+    local number_input = ui.input({
+        x = 20, y = 410,
+        w = 200, h = 30,
+        placeholder = "请输入数字...",
+        input_type = "number",
+        max_length = 10
+    })
+    
+    -- ==================== 5. 下拉框组件演示 ====================
+    local combo_label = ui.label({
+        x = 20, y = 460,
+        text = "5. 下拉框组件:",
+        color = ui.COLOR_BLACK,
+        size = 14
+    })
+    
+    local combo_box = ui.combo_box({
+        x = 20, y = 490,
+        w = 200, h = 30,
+        options = {"选项1", "选项2", "选项3"},
+        placeholder = "请选择",
+        selected = 1,
+        on_select = function(value, index, text)
+            log.info("component_page", "选择了:", text, "索引:", index)
+        end
+    })
+    
+    -- ==================== 6. 图片轮播组件演示 ====================
+    local picture_label = ui.label({
+        x = 20, y = 540,
+        text = "6. 图片轮播组件:",
+        color = ui.COLOR_BLACK,
+        size = 14
+    })
+    
+    local picture = ui.picture({
+        x = 20, y = 570,
+        w = 280, h = 100,
+        sources = {"/luadb/1.jpg", "/luadb/2.jpg", "/luadb/3.jpg"},
+        autoplay = true,
+        interval = 2000
+    })
+    
+    -- ==================== 7. 按钮组件演示 ====================
+    local button_label = ui.label({
+        x = 20, y = 705,
+        text = "7. 按钮组件:",
+        color = ui.COLOR_BLACK,
+        size = 14
+    })
+    
+    -- 普通按钮
+    local normal_btn = ui.button({
+        x = 20, y = 735,
+        w = 80, h = 30,
+        text = "普通按钮",
+        on_click = function()
+            log.info("component_page", "普通按钮被点击")
+        end
+    })
+    
+    -- 带颜色的按钮
+    local colored_btn = ui.button({
+        x = 110, y = 735,
+        w = 80, h = 30,
+        text = "蓝色按钮",
+        bg_color = ui.COLOR_BLUE,
+        text_color = ui.COLOR_WHITE,
+        on_click = function()
+            log.info("component_page", "蓝色按钮被点击")
+        end
+    })
+    
+    -- 图片按钮
+    local image_btn = ui.button({
+        x = 200, y = 720,
+        w = 64, h = 64,
+        src = "/luadb/4.jpg",
+        src_toggled = "/luadb/5.jpg",
+        toggle = true,
+        on_click = function()
+            log.info("component_page", "图片按钮被点击")
+        end
+    })
+
+    
+    -- 添加所有组件到窗口
+    win:add(title)
+    win:add(btn_back)
+    win:add(progress_label)
+    win:add(progress_bar)
+    win:add(btn_progress)
+    win:add(msgbox_label)
+    win:add(btn_msgbox)
+    win:add(checkbox_label)
+    win:add(checkbox1)
+    win:add(checkbox2)
+    win:add(input_label)
+    win:add(text_input)
+    win:add(password_input)
+    win:add(number_input)
+    win:add(combo_label)
+    win:add(combo_box)
+    win:add(picture_label)
+    win:add(picture)
+    win:add(button_label)
+    win:add(normal_btn)
+    win:add(colored_btn)
+    win:add(image_btn)
+
+    return win
+end
+
+return component_page

+ 147 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/default_font_page.lua

@@ -0,0 +1,147 @@
+--[[
+@module  default_font_page
+@summary 默认字体演示页面模块,使用内置12号点阵字体功能
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为默认字体演示页面功能模块,核心业务逻辑为:
+1、创建演示窗口,展示内置12号点阵字体的固定大小特性;
+2、演示数字、符号、中英文混排的显示效果;
+3、展示默认字体的特性和限制说明;
+4、提供返回主页的导航功能;
+
+本文件的对外接口有1个:
+1、default_font_page.create(ui):创建默认字体演示页面;
+]]
+
+local default_font_page = {}
+
+--[[
+创建默认字体演示页面;
+
+@api default_font_page.create(ui)
+@summary 创建默认字体演示页面界面
+@table ui UI库对象
+@return table 默认字体演示窗口对象
+
+@usage
+-- 在子页面工厂中调用创建默认字体演示页面
+local default_font_page = require("default_font_page").create(ui)
+]]
+function default_font_page.create(ui)
+    local win = ui.window({ 
+        background_color = ui.COLOR_WHITE,
+        x = 0, y = 0, w = 320, h = 480
+    })
+    
+    -- 标题 - 居中显示
+    local title = ui.label({
+        x = 120, y = 25,  -- 调整x坐标实现居中
+        text = "默认字体演示",
+        color = ui.COLOR_BLACK,
+        size = 12
+    })
+    
+    -- 返回按钮
+    local btn_back = ui.button({
+        x = 20, y = 20,
+        w = 60, h = 30,
+        text = "返回",
+        on_click = function()
+            win:back()
+        end
+    })
+    
+    -- 字体演示标题
+    local demo_title = ui.label({
+        x = 20, y = 70,
+        text = "字体演示 (固定12号):",
+        color = ui.COLOR_BLACK,
+        size = 12
+    })
+    
+    -- 数字演示 - 蓝色12号
+    local number_demo = ui.label({
+        x = 20, y = 100,
+        text = "1、数字: 0123456789",
+        color = ui.COLOR_BLUE,
+        size = 12
+    })
+    
+    -- 符号演示 - 橙色12号
+    local symbol_demo = ui.label({
+        x = 20, y = 130,
+        text = "2、符号: !@#$%^&*()_+-=[]",
+        color = ui.COLOR_ORANGE,
+        size = 12
+    })
+    
+    -- 中英文演示 - 红色12号
+    local text_demo = ui.label({
+        x = 20, y = 160,
+        text = "3、中英文: Hello 世界 ABC",
+        color = ui.COLOR_RED,
+        size = 12
+    })
+    
+    -- 默认字体特性说明
+    local feature_title = ui.label({
+        x = 20, y = 200,
+        text = "默认字体特性:",
+        color = ui.COLOR_BLACK,
+        size = 12
+    })
+    
+    local feature1 = ui.label({
+        x = 20, y = 230,
+        text = "- 内置12号点阵字体,无需外部硬件",
+        color = ui.COLOR_GRAY,
+        size = 12
+    })
+    
+    local feature2 = ui.label({
+        x = 20, y = 260,
+        text = "- 支持中英文、数字、符号显示",
+        color = ui.COLOR_GRAY,
+        size = 12
+    })
+    
+    local feature3 = ui.label({
+        x = 20, y = 290,
+        text = "- 启动快速,资源占用小",
+        color = ui.COLOR_GRAY,
+        size = 12
+    })
+    
+    local feature4 = ui.label({
+        x = 20, y = 320,
+        text = "- 字体大小固定为12号",
+        color = ui.COLOR_GRAY,
+        size = 12
+    })
+    
+    -- 启用滚动以显示完整内容
+    win:enable_scroll({
+        direction = "vertical",
+        content_height = 400,
+        threshold = 10
+    })
+    
+    -- 添加所有组件到窗口
+    win:add(title)
+    win:add(btn_back)
+    win:add(demo_title)
+    win:add(number_demo)
+    win:add(symbol_demo)
+    win:add(text_demo)
+    win:add(feature_title)
+    win:add(feature1)
+    win:add(feature2)
+    win:add(feature3)
+    win:add(feature4)
+    
+    return win
+end
+
+return default_font_page

+ 186 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/gtfont_page.lua

@@ -0,0 +1,186 @@
+--[[
+@module  gtfont_page
+@summary GTFont矢量字体演示页面模块,展示AirFONTS_1000配件板字体功能
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为GTFont矢量字体演示页面功能模块,核心业务逻辑为:
+1、创建带上下滚动功能的演示窗口,展示GTFont矢量字体特性;
+2、演示动态字体大小调整功能,展示的是12-32号字体切换,
+   GTFont支持10-192号字体,demo以展示GTFont特性为主;
+3、展示不同大小和颜色的数字、符号、中英文显示效果;
+4、提供GTFont特性说明和返回主页的导航功能;
+
+本文件的对外接口有1个:
+1、gtfont_page.create(ui):创建GTFont演示页面;
+]]
+
+local gtfont_page = {}
+local demo_state = {
+    current_size = 16
+}
+
+--[[
+创建GTFont矢量字体演示页面;
+
+@api gtfont_page.create(ui)
+@summary 创建GTFont矢量字体演示页面界面
+@table ui UI库对象
+@return table GTFont演示窗口对象
+
+@usage
+-- 在子页面工厂中调用创建GTFont演示页面
+local gtfont_page = require("gtfont_page").create(ui)
+]]
+function gtfont_page.create(ui)
+    local win = ui.window({ 
+        background_color = ui.COLOR_WHITE,
+        x = 0, y = 0, w = 320, h = 600
+    })
+    
+    -- 启用滚动以容纳更多内容
+    win:enable_scroll({
+        direction = "vertical",
+        content_height = 800,
+        threshold = 10
+    })
+    
+    -- 标题 - 居中显示
+    local title = ui.label({
+        x = 85, y = 25,  -- 通过调整x坐标实现居中
+        text = "GTFont矢量字体演示",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    -- 返回按钮
+    local btn_back = ui.button({
+        x = 20, y = 20,
+        w = 60, h = 30,
+        text = "返回",
+        on_click = function()
+            win:back()
+        end
+    })
+    
+    -- 动态字体大小演示区域
+    local dynamic_title = ui.label({
+        x = 20, y = 70,
+        text = "GTFont支持动态字体大小调整:",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    -- 预留足够高度的位置显示当前字体
+    local size_display = ui.label({
+        x = 20, y = 100,
+        text = "当前字体: 16号 蓝色",
+        color = ui.COLOR_BLUE,
+        size = 16  -- 初始大小
+    })
+    
+    local btn_increase = ui.button({
+        x = 20, y = 140,
+        w = 120, h = 30,
+        text = "点击切换字体大小",
+        on_click = function()
+            demo_state.current_size = demo_state.current_size + 4
+            if demo_state.current_size > 32 then
+                demo_state.current_size = 12
+            end
+            -- 同时更新文本和大小,显示当前颜色
+            size_display:set_text("当前字体: " .. demo_state.current_size .. "号 蓝色")
+            size_display:set_size(demo_state.current_size)
+        end
+    })
+    
+    -- 字体演示标题
+    local demo_title = ui.label({
+        x = 20, y = 180,
+        text = "字体演示:",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    -- 数字演示 - 蓝色14号
+    local number_demo = ui.label({
+        x = 20, y = 210,
+        text = "1、数字: 0123456789",
+        color = ui.COLOR_BLUE,
+        size = 14
+    })
+    
+    -- 符号演示 - 橙色20号
+    local symbol_demo = ui.label({
+        x = 20, y = 250,
+        text = "2、符号: !@#$%^&*()_+-=[]",
+        color = ui.COLOR_ORANGE,
+        size = 20
+    })
+    
+    -- 中英文演示 - 红色28号
+    local text_demo = ui.label({
+        x = 20, y = 300,
+        text = "3、中英文: LuatOS",
+        color = ui.COLOR_RED,
+        size = 28
+    })
+    
+    -- GTFont特性说明
+    local feature_title = ui.label({
+        x = 20, y = 350,
+        text = "GTFont特性:",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    -- 特性说明使用14号字体
+    local feature1 = ui.label({
+        x = 20, y = 380,
+        text = "- 使用AirFONTS_1000配件板",
+        color = ui.COLOR_GRAY,
+        size = 14
+    })
+    
+    local feature2 = ui.label({
+        x = 20, y = 410,
+        text = "- 支持10到192号的黑体字体",
+        color = ui.COLOR_GRAY,
+        size = 14
+    })
+    
+    local feature3 = ui.label({
+        x = 20, y = 440,
+        text = "- 支持GBK中文和ASCII码字符集",
+        color = ui.COLOR_GRAY,
+        size = 14
+    })
+    
+    local feature4 = ui.label({
+        x = 20, y = 470,
+        text = "- 支持灰度显示,字体边缘更平滑",
+        color = ui.COLOR_GRAY,
+        size = 14
+    })
+    
+    -- 添加所有组件到窗口
+    win:add(title)
+    win:add(btn_back)
+    win:add(dynamic_title)
+    win:add(size_display)
+    win:add(btn_increase)
+    win:add(demo_title)
+    win:add(number_demo)
+    win:add(symbol_demo)
+    win:add(text_demo)
+    win:add(feature_title)
+    win:add(feature1)
+    win:add(feature2)
+    win:add(feature3)
+    win:add(feature4)
+    
+    return win
+end
+
+return gtfont_page

+ 128 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/home_page.lua

@@ -0,0 +1,128 @@
+--[[
+@module  home_page
+@summary 主页模块,提供应用主界面和页面导航功能
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为主页功能模块,核心业务逻辑为:
+1、创建应用主窗口并配置背景颜色;
+2、配置子页面工厂函数,管理各演示页面的创建;
+3、创建标题和功能按钮,提供页面导航功能;
+4、处理按钮点击事件,实现页面切换;
+
+本文件的对外接口有1个:
+1、home_page.create():创建主页界面;
+]]
+
+local home_page = {}
+
+--[[
+创建主页界面;
+
+@api home_page.create()
+@summary 创建并配置应用主页面
+@return nil
+
+@usage
+-- 在UI主程序中调用创建主页
+home_page.create()
+]]
+function home_page.create()
+    -- 创建主页
+    local home = ui.window({ background_color = ui.COLOR_WHITE })
+    home.visible = true
+
+    -- 配置子页面工厂
+    home:configure_subpages({
+        component = function() return require("component_page").create(ui) end,
+        default_font = function() return require("default_font_page").create(ui) end,
+        gtfont = function() return require("gtfont_page").create(ui) end,
+        hzfont = function() return require("hzfont_page").create(ui) end
+    })
+
+    -- 标题
+    local title = ui.label({
+        x = 80,
+        y = 30,
+        text = "exEasyUI演示系统",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+
+    local subtitle = ui.label({
+        x = 75,
+        y = 60,
+        text = "基于exEasyUI v1.7.0开发",
+        color = ui.COLOR_GRAY,
+        size = 12
+    })
+
+    -- 组件演示按钮
+    local btn_component = ui.button({
+        x = 20,
+        y = 100,
+        w = 280,
+        h = 50,
+        text = "组件演示",
+        bg_color = ui.COLOR_BLUE,
+        text_color = ui.COLOR_WHITE,
+        on_click = function()
+            home:show_subpage("component")
+        end
+    })
+
+    -- 默认字体演示按钮
+    local btn_default_font = ui.button({
+        x = 20,
+        y = 170,
+        w = 280,
+        h = 50,
+        text = "默认字体演示",
+        bg_color = ui.COLOR_RED,
+        text_color = ui.COLOR_WHITE,
+        on_click = function()
+            home:show_subpage("default_font")
+        end
+    })
+
+    -- GTFont演示按钮
+    local btn_gtfont = ui.button({
+        x = 20,
+        y = 240,
+        w = 280,
+        h = 50,
+        text = "GTFont演示",
+        bg_color = ui.COLOR_GREEN,
+        text_color = ui.COLOR_WHITE,
+        on_click = function()
+            home:show_subpage("gtfont")
+        end
+    })
+
+    -- HZFont演示按钮
+    local btn_hzfont = ui.button({
+        x = 20,
+        y = 310,
+        w = 280,
+        h = 50,
+        text = "HZFont演示",
+        bg_color = ui.COLOR_ORANGE,
+        text_color = ui.COLOR_WHITE,
+        on_click = function()
+            home:show_subpage("hzfont")
+        end
+    })
+
+    -- 添加所有组件到窗口
+    home:add(title)
+    home:add(subtitle)
+    home:add(btn_component)
+    home:add(btn_default_font)
+    home:add(btn_gtfont)
+    home:add(btn_hzfont)
+
+    ui.add(home)
+end
+
+return home_page

+ 177 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/hzfont_page.lua

@@ -0,0 +1,177 @@
+--[[
+@module  hzfont_page
+@summary HZFont矢量字体演示页面模块,展示合宙内置矢量字体功能
+@version 1.0
+@date    2025.11.25
+@author  江访
+@usage
+本文件为HZFont矢量字体演示页面功能模块,核心业务逻辑为:
+1、创建带上下滚动功能的演示窗口,展示HZFont矢量字体特性;
+2、演示动态字体大小调整功能,支持12-32号字体切换,
+   HZFont支持10-100号字体,demo以展示HZFont特性为主;
+3、展示不同大小和颜色的数字、符号、中英文显示效果;
+4、提供HZFont特性说明和返回主页的导航功能;
+
+本文件的对外接口有1个:
+1、hzfont_page.create(ui):创建HZFont演示页面;
+]]
+
+local hzfont_page = {}
+local demo_state = {
+    current_size = 16  -- 默认大小
+}
+
+--[[
+创建HZFont矢量字体演示页面;
+
+@api hzfont_page.create(ui)
+@summary 创建HZFont矢量字体演示页面界面
+@table ui UI库对象
+@return table HZFont演示窗口对象
+
+@usage
+-- 在子页面工厂中调用创建HZFont演示页面
+local hzfont_page = require("hzfont_page").create(ui)
+]]
+function hzfont_page.create(ui)
+    local win = ui.window({ 
+        background_color = ui.COLOR_WHITE,
+        x = 0, y = 0, w = 320, h = 600
+    })
+    
+    -- 启用滚动以容纳更多内容
+    win:enable_scroll({
+        direction = "vertical",
+        content_height = 800,
+        threshold = 10
+    })
+    
+    -- 标题 - 居中显示
+    local title = ui.label({
+        x = 85, y = 25,  -- 调整x坐标实现居中
+        text = "HZFont矢量字体演示",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    -- 返回按钮
+    local btn_back = ui.button({
+        x = 20, y = 20,
+        w = 60, h = 30,
+        text = "返回",
+        on_click = function()
+            win:back()
+        end
+    })
+    
+    -- 动态字体大小说明
+    local dynamic_title = ui.label({
+        x = 20, y = 70,
+        text = "HZFont支持动态字体大小调整:",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    local size_info = ui.label({
+        x = 20, y = 100,
+        text = "当前初始化大小: 16号 (可调整)",
+        color = ui.COLOR_BLUE,
+        size = 16  -- 使用初始化大小
+    })
+    
+    local btn_change_size = ui.button({
+        x = 20, y = 140,
+        w = 120, h = 30,
+        text = "点击切换字体大小",
+        on_click = function()
+            -- 循环切换不同大小
+            demo_state.current_size = demo_state.current_size + 4
+            if demo_state.current_size > 32 then
+                demo_state.current_size = 12
+            end
+            -- 更新显示文本和字体大小
+            size_info:set_text("当前字体大小: " .. demo_state.current_size .. "号")
+            size_info:set_size(demo_state.current_size)
+        end
+    })
+    
+    -- 字体演示标题
+    local demo_title = ui.label({
+        x = 20, y = 180,
+        text = "字体演示:",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    -- 数字演示 - 蓝色14号
+    local number_demo = ui.label({
+        x = 20, y = 210,
+        text = "1、数字: 0123456789",
+        color = ui.COLOR_BLUE,
+        size = 14
+    })
+    
+    -- 符号演示 - 橙色20号
+    local symbol_demo = ui.label({
+        x = 20, y = 250,
+        text = "2、符号: !@#$%^&*()_+-=[]",
+        color = ui.COLOR_ORANGE,
+        size = 20
+    })
+    
+    -- 中英文演示 - 红色28号
+    local text_demo = ui.label({
+        x = 20, y = 300,
+        text = "3、中英文: LuatOS",
+        color = ui.COLOR_RED,
+        size = 28
+    })
+    
+    -- HZFont特性说明 - 位置上移
+    local feature_title = ui.label({
+        x = 20, y = 350,
+        text = "HZFont特性说明:",
+        color = ui.COLOR_BLACK,
+        size = 16
+    })
+    
+    local feature1 = ui.label({
+        x = 20, y = 380,
+        text = "- 内置矢量字体,无需外部硬件",
+        color = ui.COLOR_GRAY,
+        size = 14
+    })
+    
+    local feature2 = ui.label({
+        x = 20, y = 410,
+        text = "- 支持10-100号字体动态大小调整",
+        color = ui.COLOR_GRAY,
+        size = 14
+    })
+    
+    local feature3 = ui.label({
+        x = 20, y = 440,
+        text = "- 支持抗锯齿,自动缓存显示文字",
+        color = ui.COLOR_GRAY,
+        size = 14
+    })
+    
+    -- 添加所有组件到窗口
+    win:add(title)
+    win:add(btn_back)
+    win:add(dynamic_title)
+    win:add(size_info)
+    win:add(btn_change_size)
+    win:add(demo_title)
+    win:add(number_demo)
+    win:add(symbol_demo)
+    win:add(text_demo)
+    win:add(feature_title)
+    win:add(feature1)
+    win:add(feature2)
+    win:add(feature3)
+    
+    return win
+end
+
+return hzfont_page

+ 36 - 0
module/Air8000/demo/accessory_board/AirLCD_1010/exeasyui/ui/ui_main.lua

@@ -0,0 +1,36 @@
+--[[
+@module  home_page
+@summary 主页模块,基于exEasyUI实现
+@version 1.0
+@date    2025.12.2
+@author  江访
+@usage
+本文件为exeasyui主程序模块,核心业务逻辑为:
+1、设置主题为浅色;
+2、进入演示主页面;
+3、启用主循环;
+
+本文件没有对外接口;
+
+]]
+
+
+
+local home_page = require("home_page")
+
+-- 启动UI主任务
+local function ui_main()
+
+    -- 初始化UI主题
+    ui.sw_init({ theme = "light" })
+    
+    home_page.create()
+
+    -- 主渲染循环
+    while true do
+        ui.refresh()
+        sys.wait(30)
+    end
+end
+
+sys.taskInit(ui_main)