整定一版

This commit is contained in:
冯佳
2025-12-19 17:01:27 +08:00
parent 294a49f207
commit 8bddc34c88
43 changed files with 7273 additions and 956 deletions

View File

@ -12,10 +12,10 @@
| 层级 | 主要职责 | 包含模块 | 文件位置 | 用户可定制性 |
|------|----------|----------|----------|--------------|
| **核心层** | 提供菜单组件的核心功能,包括菜单节点管理、事件处理、状态机等 | 菜单核心、事件队列、哈希表索引、栈管理 | src/core/ | 不可定制 |
| **功能扩展层** | 基于核心层扩展的功能模块,用户可根据需求裁剪 | 参数管理、多语言支持、Modbus映射、状态机扩展 | src/features/、src/param/、src/lang/ | 部分可定制 |
| **硬件端口层** | 提供硬件适配接口,对接具体硬件平台 | 硬件驱动抽象、打印接口、系统时间、中断管理 | port/ | 完全可定制 |
| **API层** | 对外提供统一的API接口屏蔽内部实现细节 | 上下文管理、菜单管理、事件处理、功能扩展接口 | api/ | 不可定制 |
| **核心层** | 提供菜单组件的核心功能,包括菜单节点管理、事件处理、状态机等 | 菜单核心menu_core.c、事件队列menu_event.c、哈希表索引menu_hash.c、栈管理menu_stack.c | src/core/ | 不可定制 |
| **功能扩展层** | 基于核心层扩展的功能模块,用户可根据需求裁剪 | 参数管理menu_param.c、多语言支持menu_lang.c | src/param/、src/lang/ | 部分可定制 |
| **硬件端口层** | 提供硬件适配接口,对接具体硬件平台 | 硬件驱动抽象menu_port.c | port/ | 完全可定制 |
| **API层** | 对外提供统一的API接口屏蔽内部实现细节 | 统一API接口menu_api.c | api/ | 不可定制 |
### 2.2 模块间依赖关系
@ -187,6 +187,45 @@ typedef struct {
- 状态转换动作可定制,便于扩展菜单行为
- 支持状态转换描述,便于调试
### 4.5 参数结构体
```c
typedef struct {
uint16_t id; ///< 参数ID
const char* name; ///< 参数名称
ParamType type; ///< 参数类型
void* value; ///< 参数值指针
void* default_value; ///< 默认值指针
void* min_value; ///< 最小值指针
void* max_value; ///< 最大值指针
bool is_read_only; ///< 是否只读
bool is_modified; ///< 是否已修改
} MenuParam;
```
**设计亮点**
- 支持多种参数类型int8/uint8/int16/uint16/int32/uint32/float
- 自动范围检查和边界处理
- 参数与菜单节点绑定,支持菜单直接调整参数
- 支持默认值恢复功能
### 4.6 语言包结构体
```c
typedef struct {
LangId id; ///< 语言ID
const char* name; ///< 语言名称(如"English"、"中文"
const LangStrItem* strings; ///< 字符串数组
uint16_t string_count; ///< 字符串数量
} LangPack;
```
**设计亮点**
- 支持多种语言切换
- 字符串ID映射机制便于管理和维护
- 自动回退到默认语言,提高系统容错性
- 优化的语言字符串查找算法
## 5. 核心算法
### 5.1 哈希表算法