docs: 调整为7种传感器类型并规划配对时手动按键微调后缀序号逻辑
This commit is contained in:
@@ -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` 以防止重复触发:
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -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` 模式,恢复手环的常规时钟显示。
|
||||
|
||||
@@ -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 -->
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user