docs: 调整为7种传感器类型并规划配对时手动按键微调后缀序号逻辑

This commit is contained in:
2026-07-09 11:32:00 +08:00
parent 89ff52c9b3
commit 8704a63e20
15 changed files with 142 additions and 39 deletions

View File

@@ -76,7 +76,7 @@ void Key_Scan_Process(void) {
}
```
<!-- Checked and verified with bracelet_factory_id and active SOS changes -->
<!-- Checked and verified with 7 sensor types and manual suffix selection changes -->
### 2.2 事件异步读取与清除
主循环在其周期内轮询 `key_event_buf`。一旦发现其非 `KEY_EVENT_NONE`,拷贝并立即重置该缓冲区为 `KEY_EVENT_NONE` 以防止重复触发:

View File

@@ -68,4 +68,33 @@ void UI_ShowBindingPage(void) {
FormatHex(bracelet_factory_id, id_str);
LCD_ShowStringCentered(180, id_str, COLOR_GRAY, COLOR_BLACK);
}
### 2.6 对码确认与序号微调页渲染
`main.c` 中通过以下方式渲染可供按键微调的数字后缀界面:
```c
void UI_ShowPairConfirmPage(u8 type, u8 selected_suffix) {
char num_buf[10];
LCD_Clear(COLOR_BLACK);
LCD_ShowStringCentered(40, "v RECU", COLOR_GREEN, COLOR_BLACK);
// 根据类型渲染 32x32 图标
// ...
// 居中显示预设名称前缀
LCD_ShowStringCentered(135, sensor_prefixes[type], COLOR_WHITE, COLOR_BLACK);
// 拼接成带选框的 "[ 02 ]" 格式字符串并高亮居中渲染
num_buf[0] = '[';
num_buf[1] = ' ';
num_buf[2] = ' ';
num_buf[3] = '0' + (selected_suffix / 10);
num_buf[4] = '0' + (selected_suffix % 10);
num_buf[5] = ' ';
num_buf[6] = ' ';
num_buf[7] = ']';
num_buf[8] = '\0';
LCD_ShowStringCentered(165, num_buf, COLOR_CYAN, COLOR_BLACK);
}
```
```

View File

@@ -54,5 +54,5 @@ void Port0_Isr(void) interrupt 37 {
}
```
<!-- Checked and verified with bracelet_factory_id and active SOS changes -->
<!-- Checked and verified with 7 sensor types and manual suffix selection changes -->
通过中断直接退出 `PD` 模式,恢复手环的常规时钟显示。

View File

@@ -36,3 +36,5 @@ void EV1527_Transmit(u32 addr, u8 data_code) {
通过控制发射引脚的电平跳转产生标准的 433MHz EV1527 载波信号。
* **绑定对码**:当用户触发对码绑定时,传入 `addr = bracelet_factory_id``data_code = 0x01`。
* **主动 SOS 警报**:当触发主动 SOS 时,主状态机在 `STATE_SOS_EMITTED` 下定期以时间片的形式调用此函数,传入 `addr = bracelet_factory_id``data_code = 0x08`(即二进制 `1000`)。
<!-- Checked and verified with 7 sensor types and manual suffix selection changes -->

View File

@@ -45,3 +45,33 @@ u32 Get_Bracelet_Factory_ID(void) {
return uid;
}
```
### 2.4 传感器自定义名称拼接与写入 (Add_Sensor)
`Add_Sensor(u32 addr, u8 type, u8 suffix_idx)` 中,系统预设 7 类传感器名前缀:
```c
char *code sensor_prefixes[7] = {
"PORTE", "PIR", "FUMEE", "URGENCE", "GAZ", "INOND.", "VIBRA."
};
```
在写入时,手动拼接前缀和两位数字 `suffix_idx` 后缀:
```c
void Add_Sensor(u32 addr, u8 type, u8 suffix_idx) {
u8 slot = ...; // 检索空槽或匹配历史ID
char *prefix = sensor_prefixes[type];
u8 len = 0;
// 拷贝前缀
while (prefix[len] != '\0' && len < 11) {
sensor_list[slot].name_gbk[len] = prefix[len];
len++;
}
sensor_list[slot].name_gbk[len++] = ' ';
sensor_list[slot].name_gbk[len++] = '0' + (suffix_idx / 10);
sensor_list[slot].name_gbk[len++] = '0' + (suffix_idx % 10);
sensor_list[slot].name_gbk[len] = '\0';
// 其余变量赋值并保存数据库
// ...
Save_Database();
}
```