--[[ @module ui_main @summary 调试宝UI主程序,负责页面管理和主循环 @version 1.0 @date 2026.03.04 @author 李一玮 @usage 本文件管理所有调试宝UI页面,包括主页和各个演示页面。 ]] require("tsb_login_page") require("tsb_home_page") require("tsb_bsk_page") require("tsb_tq_page") require("tsb_bmq_page") require("tsb_ywy_page") require("tsb_lora_page") require("tsb_devlog_page") require("tsb_485log_page") require("tsb_mqtt_page") require("tsb_firm_page") require("tsb_upgrade_page") require("tsb_reflash_page") require("tsb_light_page") require("tsb_devinfo_page") require("tsb_update_page") require("tsb_wlan_page") require("tsb_game_page") require("tsb_wavein_page") require("tsb_waveout_page") require("tsb_ywy_1_page") require("tsb_ywy_2_page") require("tsb_232log_page") require("tsb_channel_page") require("tsb_log_page") require("tsb_help_page") require("tsb_waveform_page") -- 当前显示的页面 local current_page = nil local page_stack = {} -- 页面,用于返回功能 -- local frame_time = 20 -- 主循环刷新间隔,单位ms -- 页面定义 local pages = { tsb_login_page = "tsb_login_page", -- 调试宝登录页面 tsb_home_page = "tsb_home_page", -- 调试宝主界面 tsb_bsk_page = "tsb_bsk_page", -- 报税口页面 tsb_tq_page = "tsb_tq_page", -- 提枪信号页面 tsb_bmq_page = "tsb_bmq_page", -- 编码器页面 tsb_ywy_page = "tsb_ywy_page", -- 液位仪页面 tsb_lora_page = "tsb_lora_page", -- 无线局域网监测页面 tsb_devlog_page = "tsb_devlog_page", -- 设备日志监测页面 tsb_485log_page = "tsb_485log_page", -- 485日志监测页面 tsb_mqtt_page = "tsb_mqtt_page", -- MQTT配置页面 tsb_firm_page = "tsb_firm_page", -- 固件包下载页面 tsb_upgrade_page = "tsb_upgrade_page", -- 升级演示页面 tsb_reflash_page = "tsb_reflash_page", -- 刷机页面 tsb_light_page = "tsb_light_page", -- 亮度页面 tsb_devinfo_page = "tsb_devinfo_page", -- 设备信息页面 tsb_update_page = "tsb_update_page", -- 更新页面 tsb_wlan_page = "tsb_wlan_page", -- 网络配置页面 tsb_wavein_page = "tsb_wavein_page", -- 波形输入页面 tsb_waveout_page = "tsb_waveout_page", -- 波形输出页面 tsb_ywy_1_page = "tsb_ywy_1_page", -- 液位仪页面1 tsb_ywy_2_page = "tsb_ywy_2_page", -- 液位仪页面2 tsb_232log_page = "tsb_232log_page", -- 232日志监测页面 tsb_channel_page = "tsb_channel_page", -- 信道切换页面 tsb_log_page = "tsb_log_page", -- 本机日志页面 tsb_help_page = "tsb_help_page", -- 帮助页面 tsb_waveform_page = "tsb_waveform_page", -- 波形页面 -- tsb_game_page = "tsb_game_page", -- 游戏页面 } -- 显示指定页面 local function show_page(page_name, params) -- 保存当前页面 if not params or not (params.from_back or params.from_home) then if current_page then table.insert(page_stack, { name = current_page.name, instance = current_page.instance }) end end -- 清理当前页面 if current_page and current_page.instance.cleanup then current_page.instance.cleanup() end -- 加载新页面 local module_name = pages[page_name] if not module_name then log.error("tsb_ui_main", "页面不存在:", page_name) return false end local page_module = require(module_name) -- 初始化页面 if page_module.init then page_module.init(params) end -- 更新当前页面信息 current_page = { name = page_name, module = module_name, instance = page_module } log.info("tsb_ui_main", "切换到页面:", page_name) return true end -- 返回上一个页面 local function go_back() if #page_stack > 0 then local prev_page = table.remove(page_stack) if prev_page.instance and prev_page.instance.show then prev_page.instance.show() current_page = prev_page log.info("tsb_ui_main", "返回页面:", prev_page.name) return true else return show_page(prev_page.name, { from_back = true }) end else return show_page("tsb_login_page", { from_back = true }) end end -- 返回到首页面 local function go_home() -- 先判断是否已在首页 if current_page and current_page.name == "tsb_home_page" then log.info("tsb_ui_main", "当前已在首页,无需跳转") return true end -- 清空页面栈 page_stack = {} -- 调用show_page,用from_home标识 return show_page("tsb_home_page", { from_home = true }) end -- 主任务函数 local function tsb_ui_main_task() -- 3V3供电使能 gpio.setup(153,1, gpio.PULLUP) -- 10V供电使能 gpio.setup(147,1, gpio.PULLUP) -- 开启屏幕供电 gpio.setup(31,0) gpio.set(31,0) -- 初始化硬件 lcd_drv.init() tp_drv.init() -- 显示主页 show_page("tsb_login_page") end -- 全局函数,方便页面调用 _G.show_page = show_page _G.go_back = go_back _G.go_home = go_home -- 启动UI主任务 sys.taskInit(tsb_ui_main_task)