docs: 调整为7种传感器类型并规划配对时手动按键微调后缀序号逻辑
This commit is contained in:
@@ -49,6 +49,17 @@ bit is_sos_pressed = (KEY_SOS1 == 0) || (KEY_SOS2 == 0);
|
||||
2. **发送中**:通过硬件 SPI 直接串行写入 72 位转换数据(24位 RGB 经过 LUT 展宽)。
|
||||
3. **发送后**:将 `P2.5` 引脚改回 **推挽输出模式**。调用 `EA = 1` 开启中断,继续通过常规 IO 控制马达电平。
|
||||
|
||||
### 1.5 确认配对时的后缀序号调整机制
|
||||
|
||||
在对码确认状态 (`STATE_PAIR_CONFIRM`) 下,系统支持用户手动微调所要保存同类防区的数字序号:
|
||||
* **全局变量定义**:`u8 selected_suffix_num` 用以记录当前的数字选择值。
|
||||
* **初始默认分配**:当信号被捕获跳转到该状态时,系统自动检索当前内存对码表,统计捕获类型已登记的个数 $C$,将 `selected_suffix_num` 初始化为 $C + 1$。
|
||||
* **按键调整行为**:
|
||||
* 读取到 `KEY_EVENT_UP_CLICK` 时:`if (selected_suffix_num < 99) selected_suffix_num++`。
|
||||
* 读取到 `KEY_EVENT_DOWN_CLICK` 时:`if (selected_suffix_num > 1) selected_suffix_num--`。
|
||||
* 调值完成后置 `Redraw = 1` 以触发 LCD 快速局部刷新。
|
||||
* **最终确认写入**:当用户按下 CONFIRM 键或 SOS 键时,系统自动取出对应的预设名前缀(如 `PORTE`),并将 `selected_suffix_num` 转换为两位字符串格式(如 `02`),以 `[前缀] [序号]` 格式拼装后(最大 15 字节,如 `PORTE 02`),调用数据库写入函数。
|
||||
|
||||
---
|
||||
|
||||
## 2. 核心软件业务状态机 (SystemState)
|
||||
@@ -65,8 +76,8 @@ stateDiagram-v2
|
||||
STATE_NORMAL --> STATE_PAIR_MENU : ▲ + ▼ 长按 3 秒
|
||||
STATE_PAIR_MENU --> STATE_PAIR_WAIT : 确认选中类型
|
||||
STATE_PAIR_WAIT --> STATE_PAIR_CONFIRM : 捕获 433MHz 匹配数据
|
||||
STATE_PAIR_CONFIRM --> STATE_PAIR_SUCCESS : 短按 SOS 保存
|
||||
STATE_PAIR_CONFIRM --> STATE_PAIR_FAIL : 超时/按▼取消
|
||||
STATE_PAIR_CONFIRM --> STATE_PAIR_SUCCESS : 按 CONFIRM/SOS 键并保存名称
|
||||
STATE_PAIR_CONFIRM --> STATE_PAIR_FAIL : 超时/长按▼取消
|
||||
STATE_PAIR_SUCCESS --> STATE_PAIR_MENU : 2秒后自动返回
|
||||
STATE_PAIR_FAIL --> STATE_PAIR_MENU : 2秒后自动返回
|
||||
|
||||
@@ -85,10 +96,11 @@ stateDiagram-v2
|
||||
* **存储结构**:`Sensor_Slot` 结构体:
|
||||
```c
|
||||
typedef struct {
|
||||
u32 addr; // 24位射频硬件地址 (EV1527)
|
||||
u8 type; // 传感器类型 (0: 门磁, 1: 红外, 2: 烟感, 3: 燃气, 4: 水浸)
|
||||
u8 is_used; // 登记标志(0x01表示有效,其它代表空闲)
|
||||
u8 addr[3]; // 24位射频物理地址 (EV1527)
|
||||
u8 type; // 传感器类型 (0:门磁, 1:红外, 2:烟感, 3:紧急, 4:气体, 5:水浸, 6:振动)
|
||||
u8 zone; // 防区类别 (0: 永久防区, 1: 普通可撤防区)
|
||||
char name[16]; // 自定义法语防区名称
|
||||
char name_gbk[16]; // 法语自定义防区名称 (以 [前缀] [序号] 自动格式化写入)
|
||||
} Sensor_Slot;
|
||||
```
|
||||
* 一共支持 **16** 个传感器槽位,通过 `Load_Database()` 和 `Save_Database()` 进行统一序列化读写。
|
||||
|
||||
Reference in New Issue
Block a user