From 7cbd83c40b30ea4f7d56531af07b0b306a06a0cd Mon Sep 17 00:00:00 2001 From: Antigravity IDE Date: Fri, 17 Jul 2026 09:41:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20App=20=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=B8=8E=E5=91=BD=E5=90=8D=E5=86=B2=E7=AA=81?= =?UTF-8?q?=EF=BC=8C=E5=BD=BB=E5=BA=95=E5=9C=A8=E5=90=8E=E5=8F=B0=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E8=A1=8C=E6=88=90=E5=8A=9F=E7=BC=96=E8=AF=91=E7=94=9F?= =?UTF-8?q?=E6=88=90=20wristband.hex=20=E5=9B=BA=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/app_alarm.c | 50 ++++++++++++++++++++++---------------------- App/app_menu.c | 4 ++-- App/app_pair.c | 10 ++++----- App/app_rf_monitor.c | 1 - App/app_sos.c | 15 ++++++------- wristband.uvproj | 35 +++++++++++++++++++++++++++++++ 6 files changed, 73 insertions(+), 42 deletions(-) diff --git a/App/app_alarm.c b/App/app_alarm.c index 8e773d1..7ea3bad 100644 --- a/App/app_alarm.c +++ b/App/app_alarm.c @@ -18,7 +18,7 @@ extern volatile bit alarm_flash_flag; extern Sensor_Slot xdata sensor_list[16]; // 本地私有变量 -static u32 alarm_timer_ms = 0; // 报警震动波形计数器 +static u32 alarm_pulse_timer = 0; // 报警震动波形计数器 static u16 last_run_tick = 0; // 记录上一次轮询的 ticks // 声明本应用的生命周期回调函数 @@ -47,7 +47,7 @@ static void AlarmApp_OnStart(void) u8 zone = 1; current_state = STATE_ALARM; // 系统切入报警状态 - alarm_timer_ms = 0; // 振动计时器清零 + alarm_pulse_timer = 0; // 振动计时器清零 last_run_tick = ms_tick; // 比对查出当前触发警报的传感器在数据库中的属性 @@ -114,47 +114,47 @@ static void AlarmApp_onRun(void) } last_run_tick = ms_tick; - alarm_timer_ms += tick_diff; - if (alarm_timer_ms >= 5000) { - alarm_timer_ms = 0; // 5秒一周期 + alarm_pulse_timer += tick_diff; + if (alarm_pulse_timer >= 5000) { + alarm_pulse_timer = 0; // 5秒一周期 } if (type == 0) { // 门磁警报波形:单次震动 300ms,停 4700ms - if (alarm_timer_ms < 300) MOTOR = 1; else MOTOR = 0; + if (alarm_pulse_timer < 300) MOTOR = 1; else MOTOR = 0; } else if (type == 1) { // PIR 警报波形:震动 300ms,停 200ms,再震动 300ms,停 4200ms - if (alarm_timer_ms < 300) MOTOR = 1; - else if (alarm_timer_ms >= 300 && alarm_timer_ms < 500) MOTOR = 0; - else if (alarm_timer_ms >= 500 && alarm_timer_ms < 800) MOTOR = 1; + if (alarm_pulse_timer < 300) MOTOR = 1; + else if (alarm_pulse_timer >= 300 && alarm_pulse_timer < 500) MOTOR = 0; + else if (alarm_pulse_timer >= 500 && alarm_pulse_timer < 800) MOTOR = 1; else MOTOR = 0; } else if (type == 2) { // 烟感警报波形:急促短闪三下 200ms-150ms-200ms-150ms-200ms - if (alarm_timer_ms < 200) MOTOR = 1; - else if (alarm_timer_ms >= 200 && alarm_timer_ms < 350) MOTOR = 0; - else if (alarm_timer_ms >= 350 && alarm_timer_ms < 550) MOTOR = 1; - else if (alarm_timer_ms >= 550 && alarm_timer_ms < 700) MOTOR = 0; - else if (alarm_timer_ms >= 700 && alarm_timer_ms < 900) MOTOR = 1; + if (alarm_pulse_timer < 200) MOTOR = 1; + else if (alarm_pulse_timer >= 200 && alarm_pulse_timer < 350) MOTOR = 0; + else if (alarm_pulse_timer >= 350 && alarm_pulse_timer < 550) MOTOR = 1; + else if (alarm_pulse_timer >= 550 && alarm_pulse_timer < 700) MOTOR = 0; + else if (alarm_pulse_timer >= 700 && alarm_pulse_timer < 900) MOTOR = 1; else MOTOR = 0; } else if (type == 3) { // 燃气报警波形:快频连续四下 - if (alarm_timer_ms < 200) MOTOR = 1; - else if (alarm_timer_ms >= 200 && alarm_timer_ms < 300) MOTOR = 0; - else if (alarm_timer_ms >= 300 && alarm_timer_ms < 500) MOTOR = 1; - else if (alarm_timer_ms >= 500 && alarm_timer_ms < 600) MOTOR = 0; - else if (alarm_timer_ms >= 600 && alarm_timer_ms < 800) MOTOR = 1; - else if (alarm_timer_ms >= 800 && alarm_timer_ms < 900) MOTOR = 0; - else if (alarm_timer_ms >= 900 && alarm_timer_ms < 1100) MOTOR = 1; + if (alarm_pulse_timer < 200) MOTOR = 1; + else if (alarm_pulse_timer >= 200 && alarm_pulse_timer < 300) MOTOR = 0; + else if (alarm_pulse_timer >= 300 && alarm_pulse_timer < 500) MOTOR = 1; + else if (alarm_pulse_timer >= 500 && alarm_pulse_timer < 600) MOTOR = 0; + else if (alarm_pulse_timer >= 600 && alarm_pulse_timer < 800) MOTOR = 1; + else if (alarm_pulse_timer >= 800 && alarm_pulse_timer < 900) MOTOR = 0; + else if (alarm_pulse_timer >= 900 && alarm_pulse_timer < 1100) MOTOR = 1; else MOTOR = 0; } else if (type == 4) { // 水浸警报波形:慢速双长震波 600ms 和 600ms - if (alarm_timer_ms < 600) MOTOR = 1; - else if (alarm_timer_ms >= 600 && alarm_timer_ms < 900) MOTOR = 0; - else if (alarm_timer_ms >= 900 && alarm_timer_ms < 1500) MOTOR = 1; + if (alarm_pulse_timer < 600) MOTOR = 1; + else if (alarm_pulse_timer >= 600 && alarm_pulse_timer < 900) MOTOR = 0; + else if (alarm_pulse_timer >= 900 && alarm_pulse_timer < 1500) MOTOR = 1; else MOTOR = 0; } else { // 缺省状态默认单次 300ms - if (alarm_timer_ms < 300) MOTOR = 1; else MOTOR = 0; + if (alarm_pulse_timer < 300) MOTOR = 1; else MOTOR = 0; } } diff --git a/App/app_menu.c b/App/app_menu.c index 0274cd7..0f97e61 100644 --- a/App/app_menu.c +++ b/App/app_menu.c @@ -25,8 +25,8 @@ extern volatile u16 ms_tick; static u8 menu_level = 0; // 0-主菜单, 1-二级传感器选择菜单, 2-IPC绑定一键发射 static u16 last_bind_tx_ms = 0; // 记录上一次绑定发射的时间戳 -// 克隆的手环出厂物理 ID 地址定义 (用于一键绑定) -#define CLONED_ADDR 0x55AAAA +// 引入外部时钟调节接口 +extern void Start_Time_Edit(void); // 声明本应用的生命周期回调函数 static void MenuApp_OnStart(void); diff --git a/App/app_pair.c b/App/app_pair.c index 7992c25..764219c 100644 --- a/App/app_pair.c +++ b/App/app_pair.c @@ -28,7 +28,7 @@ static u8 last_radar_sec; // 备份上一次雷达动画的帧索引 static u8 captured_zone = 1; // 准备分配的防区号 (1~99) static u8 success_start_sec = 0;// 对码成功时的起始秒数 (延迟退场) static u8 fail_start_sec = 0; // 对码失败时的起始秒数 -static u32 pair_timeout_ms = 0; // 对码超时毫秒计数器 +static u32 pair_pulse_timer = 0; // 对码超时毫秒计数器 static u16 last_run_tick = 0; // 上一次执行 onRun 时的毫秒滴答数 // 声明本应用的生命周期回调函数 @@ -58,7 +58,7 @@ static void PairApp_OnStart(void) pair_state = PAIR_STATE_WAIT; last_radar_sec = 99; // 强制刷写 current_state = STATE_PAIR_WAIT; - pair_timeout_ms = 0; + pair_pulse_timer = 0; last_run_tick = ms_tick; captured_zone = 1; RF_SetMode(1); // 开启无线接收模式 @@ -105,9 +105,9 @@ static void PairApp_onRun(void) } // 累加计算 30 秒的对码时间上限 - pair_timeout_ms += tick_diff; - if (pair_timeout_ms >= 30000UL) { - pair_timeout_ms = 0; + pair_pulse_timer += tick_diff; + if (pair_pulse_timer >= 30000UL) { + pair_pulse_timer = 0; pair_state = PAIR_STATE_FAIL; current_state = STATE_PAIR_FAIL; fail_start_sec = current_sec; diff --git a/App/app_rf_monitor.c b/App/app_rf_monitor.c index 2eac334..c0bee85 100644 --- a/App/app_rf_monitor.c +++ b/App/app_rf_monitor.c @@ -101,6 +101,5 @@ static void RfMonitorApp_onClose(void) */ static EventResult RfMonitorApp_onEvent(SystemEvent *evt) { - (void)evt; return EVENT_IGNORED; } diff --git a/App/app_sos.c b/App/app_sos.c index e1b87e9..cfc4ca1 100644 --- a/App/app_sos.c +++ b/App/app_sos.c @@ -12,12 +12,9 @@ extern SystemState current_state; extern volatile u16 ms_tick; extern volatile bit alarm_flash_flag; -// 克隆的手环出厂物理 ID 地址 -#define CLONED_ADDR 0x55AAAA - // 本地私有变量 static u8 sos_last_phase = 99; // 记录上一次发射的 500ms 半周期状态 -static u32 alarm_timer_ms = 0; // SOS 马达震动波形计数器 +static u32 sos_pulse_timer = 0; // SOS 马达震动波形计数器 static u16 last_run_tick = 0; // 记录上一次轮询的 ticks // 声明本应用的生命周期回调函数 @@ -43,7 +40,7 @@ static void SOSApp_OnStart(void) { current_state = STATE_SOS_EMITTED; // 进入 SOS 紧急求救状态 sos_last_phase = 99; - alarm_timer_ms = 0; // 马达震动计数器清零 + sos_pulse_timer = 0; // 马达震动计数器清零 last_run_tick = ms_tick; UI_ShowSosPage(); // 初始化渲染 SOS 警示主页 @@ -101,12 +98,12 @@ static void SOSApp_onRun(void) } last_run_tick = ms_tick; - alarm_timer_ms += tick_diff; - if (alarm_timer_ms >= 1200) { - alarm_timer_ms = 0; + sos_pulse_timer += tick_diff; + if (sos_pulse_timer >= 1200) { + sos_pulse_timer = 0; } - if (alarm_timer_ms < 1000) { + if (sos_pulse_timer < 1000) { MOTOR = 1; } else { MOTOR = 0; diff --git a/wristband.uvproj b/wristband.uvproj index 7a45c41..dd66b93 100644 --- a/wristband.uvproj +++ b/wristband.uvproj @@ -359,6 +359,41 @@ 1 .\App\system.c + + clock.c + 1 + .\App\clock.c + + + app_clock.c + 1 + .\App\app_clock.c + + + app_menu.c + 1 + .\App\app_menu.c + + + app_pair.c + 1 + .\App\app_pair.c + + + app_alarm.c + 1 + .\App\app_alarm.c + + + app_sos.c + 1 + .\App\app_sos.c + + + app_rf_monitor.c + 1 + .\App\app_rf_monitor.c +