From 2cb63340687ae2ada98c545227ffb247f48f3a9a Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期四, 11 五月 2023 11:05:41 +0800 Subject: [PATCH] V1.9 --- 源码/核心板/Src/application/beep_logic_app.c | 74 ++++++++++++++++++++++++++----------- 1 files changed, 52 insertions(+), 22 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" index 171a26c..d618754 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" @@ -13,37 +13,60 @@ #define ONTIME3 5 // 500ms #define OFFTIME3 5 // 500ms -uint16_t min_dist1,min_dist2; +int32_t min_dist1,min_dist2; extern u16 JDQ_time; -void Relay1Task(u16 min_dist) +u8 JDQgroup1_state,JDQgroup2_state; +void Relay1Task(void) { static u8 distoffset1=0,distoffset2=0; static uint8_t beep_state,timer_state,beep_timer,beep_ontime,beep_offtime; - if (min_dist <= g_com_map[ALARM_DISTANCE2]+distoffset1) + if (min_dist1 <= g_com_map[ALARM_DISTANCE2]+distoffset1) { - beep_ontime = 1; + JDQgroup1_state=2; + } + else if (min_dist1 <= g_com_map[ALARM_DISTANCE3]+distoffset2) + { + JDQgroup1_state=1; + } + else{ + JDQgroup1_state=0; + } + + if (min_dist2 <= g_com_map[RELAY2_DISTANCE2]+distoffset1) + { + JDQgroup2_state=2; + } + else if (min_dist2 <= g_com_map[RELAY2_DISTANCE3]+distoffset2) + { + JDQgroup2_state=1; + } + else{ + JDQgroup2_state=0; + } + + if(JDQgroup1_state==2||JDQgroup2_state==2) + { + beep_ontime = 1; beep_offtime = 0; beep_state=2; distoffset1=0; distoffset2=0; beep_timer = 0; timer_state = 1; - } - else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset2) - { - beep_ontime = JDQ_time; + }else if(JDQgroup1_state==1||JDQgroup2_state==1) + { + beep_ontime = JDQ_time; beep_offtime = JDQ_time; beep_state=1; distoffset1=0; distoffset2=0; - } - else{ - beep_state=0; + }else{ + beep_state=0; distoffset1=0; distoffset2=0; beep_timer = 0; timer_state = 1; - } + } if(beep_state!=0) { @@ -51,6 +74,7 @@ { if(beep_timer++ < beep_ontime) { + RELAY2_ON; RELAY1_ON; }else{ @@ -60,6 +84,7 @@ }else{ if(beep_timer++ < beep_offtime) { + RELAY2_OFF; RELAY1_OFF; }else{ @@ -70,7 +95,7 @@ } }else { RELAY1_OFF; - // RELAY2_OFF; + RELAY2_OFF; } } void Relay2Task(u16 min_dist) @@ -131,6 +156,9 @@ RELAY2_OFF; } } +#define RELAY2IDHEAD 9 +extern int16_t tag_angle[TAG_NUM_IN_SYS],tag_dist[TAG_NUM_IN_SYS],alarm_angle; +extern u16 tagid_list[TAG_NUM_IN_SYS]; void main_logic(void) //主逻辑在这里执行 { uint16_t i; @@ -141,21 +169,23 @@ if(beep_judge_cnt++ >= 100) { beep_judge_cnt = 0; - min_dist1=0xffff; - min_dist2=0xffff; - for(i = 0; i < 255;i++) + min_dist1=0x1ffff; + min_dist2=0x1ffff; + for(i = 0; i < TAG_NUM_IN_SYS;i++) { + if(g_Tagdist[i] < min_dist1&&g_Tagdist[i]>g_com_map[ALARM_DISTANCE1]) { - min_dist1=g_Tagdist[i]; - } - if(g_Tagdist[i] < min_dist2&&g_Tagdist[i]>g_com_map[RELAY2_DISTANCE1]) + min_dist1=g_Tagdist[i]; + } + if(tag_dist[i] < min_dist2&&tag_dist[i]>g_com_map[RELAY2_DISTANCE1]) { - min_dist2=g_Tagdist[i]; + if(tag_angle[i]>alarm_angle) + min_dist2=tag_dist[i]; } - + } - Relay1Task(min_dist1); + Relay1Task(); Relay2Task(min_dist2); } -- Gitblit v1.9.3