| | |
| | | #define OFFTIME1 0 // 100ms |
| | | |
| | | #define ONTIME2 1 // 100ms |
| | | #define OFFTIME2 1 // 100ms |
| | | #define OFFTIME2 0 // 100ms |
| | | |
| | | #define ONTIME3 1 // 500ms |
| | | #define ONTIME3 5 // 500ms |
| | | #define OFFTIME3 5 // 500ms |
| | | void main_logic(void) //主é»è¾å¨è¿éæ§è¡ |
| | | |
| | | int32_t min_dist1,min_dist2; |
| | | extern u16 JDQ_time; |
| | | typedef enum{ |
| | | NO_ALARM, |
| | | YUJING_ALARM, |
| | | BAOJING_ALARM, |
| | | }alarm_state; |
| | | alarm_state alarm1 = NO_ALARM,alarm2 = NO_ALARM; |
| | | void Relay1Task(u16 min_dist) |
| | | { |
| | | static uint8_t beep_state,timer_state,beep_timer,beep_ontime,beep_offtime; |
| | | uint16_t i, min_dist; |
| | | 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) |
| | | { |
| | | alarm1 = BAOJING_ALARM; |
| | | } |
| | | else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset2) |
| | | { |
| | | alarm1 = YUJING_ALARM; |
| | | } |
| | | else{ |
| | | alarm1 = NO_ALARM; |
| | | } |
| | | |
| | | // if(beep_state!=0) |
| | | // { |
| | | // if(timer_state==1) |
| | | // { |
| | | // if(beep_timer++ < beep_ontime) |
| | | // { |
| | | // RELAY1_ON; |
| | | // |
| | | // }else{ |
| | | // timer_state=0; |
| | | // beep_timer=0; |
| | | // } |
| | | // }else{ |
| | | // if(beep_timer++ < beep_offtime) |
| | | // { |
| | | // RELAY1_OFF; |
| | | // |
| | | // }else{ |
| | | // timer_state=1; |
| | | // beep_timer=0; |
| | | // } |
| | | // |
| | | // } |
| | | // }else { |
| | | // RELAY1_OFF; |
| | | // // RELAY2_OFF; |
| | | // } |
| | | } |
| | | void Relay2Task(u16 min_dist) |
| | | { |
| | | static u8 distoffset12=0,distoffset22=0; |
| | | static uint8_t beep_state2,timer_state2,beep_timer2,beep_ontime2,beep_offtime2; |
| | | if (min_dist <= g_com_map[ALARM_DISTANCE2]+distoffset12) |
| | | { |
| | | alarm2 = BAOJING_ALARM; |
| | | } |
| | | else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset22) |
| | | { |
| | | alarm2 = YUJING_ALARM; |
| | | } |
| | | else{ |
| | | alarm2 = NO_ALARM; |
| | | } |
| | | |
| | | // if(beep_state2!=0) |
| | | // { |
| | | // if(timer_state2==1) |
| | | // { |
| | | // if(beep_timer2++ < beep_ontime2) |
| | | // { |
| | | // RELAY2_ON; |
| | | // |
| | | // }else{ |
| | | // timer_state2=0; |
| | | // beep_timer2=0; |
| | | // } |
| | | // }else{ |
| | | // if(beep_timer2++ < beep_offtime2) |
| | | // { |
| | | // RELAY2_OFF; |
| | | // |
| | | // }else{ |
| | | // timer_state2=1; |
| | | // beep_timer2=0; |
| | | // } |
| | | // |
| | | // } |
| | | // }else { |
| | | // // RELAY1_OFF; |
| | | // RELAY2_OFF; |
| | | // } |
| | | } |
| | | void AlarmJuge(void) |
| | | { |
| | | if(alarm1 == BAOJING_ALARM||alarm2 == BAOJING_ALARM) |
| | | { |
| | | RELAY1_ON; |
| | | RELAY2_ON; |
| | | return; |
| | | }else{ |
| | | RELAY1_OFF; |
| | | } |
| | | if(alarm1 == YUJING_ALARM||alarm2 == YUJING_ALARM) |
| | | { |
| | | RELAY2_ON; |
| | | }else{ |
| | | RELAY2_OFF; |
| | | } |
| | | } |
| | | extern uint16_t tagid_list[TAG_NUM_IN_SYS]; |
| | | extern u16 taglist_num; |
| | | void main_logic(void) //主é»è¾å¨è¿éæ§è¡ |
| | | { |
| | | uint16_t i; |
| | | //é¤UWBä¹å¤çå
¶ä»ä»£ç ... |
| | | static uint16_t beep_judge_cnt = 0; |
| | | if(beep_judge_cnt++ >= 100) |
| | | { |
| | | beep_judge_cnt = 0; |
| | | min_dist=0xffff; |
| | | for(i = 0; i < 255;i++) |
| | | { |
| | | if(g_Tagdist[i] < min_dist) |
| | | { |
| | | min_dist=g_Tagdist[i]; |
| | | } |
| | | |
| | | } |
| | | |
| | | if(min_dist <= g_com_map[ALARM_DISTANCE1]) |
| | | { |
| | | beep_ontime = ONTIME1; |
| | | beep_offtime = OFFTIME1; |
| | | beep_state=1; |
| | | }else if (min_dist <= g_com_map[ALARM_DISTANCE2]) |
| | | { |
| | | beep_ontime = ONTIME2; |
| | | beep_offtime = OFFTIME2; |
| | | beep_state=1; |
| | | }else if (min_dist <= g_com_map[ALARM_DISTANCE3]) |
| | | { |
| | | beep_ontime = ONTIME3; |
| | | beep_offtime = OFFTIME3; |
| | | beep_state=1; |
| | | }else{ |
| | | beep_state=0; |
| | | } |
| | | |
| | | if(beep_state==1) |
| | | { |
| | | if(timer_state==1) |
| | | { |
| | | if(beep_timer++ < beep_ontime) |
| | | { |
| | | switch(g_com_map[ALARM_DEV]) |
| | | { |
| | | case 0: |
| | | BEEP2_ON; |
| | | BEEP_OFF; |
| | | OUT2_OFF; |
| | | break; |
| | | case 1: |
| | | BEEP_ON; |
| | | BEEP2_OFF; |
| | | OUT2_OFF; |
| | | break; |
| | | case 2: |
| | | OUT2_ON; |
| | | BEEP_OFF; |
| | | BEEP2_OFF; |
| | | break; |
| | | default: |
| | | BEEP2_ON; |
| | | BEEP_ON; |
| | | OUT2_ON; |
| | | break; |
| | | } |
| | | }else{ |
| | | timer_state=0; |
| | | beep_timer=0; |
| | | } |
| | | }else{ |
| | | if(beep_timer++ < beep_offtime) |
| | | { |
| | | switch(g_com_map[ALARM_DEV]) |
| | | { |
| | | case 0: |
| | | BEEP2_OFF; |
| | | break; |
| | | case 1: |
| | | BEEP_OFF; |
| | | break; |
| | | case 2: |
| | | OUT2_OFF; |
| | | break; |
| | | default: |
| | | BEEP2_OFF; |
| | | BEEP_OFF; |
| | | OUT2_OFF; |
| | | break; |
| | | } |
| | | }else{ |
| | | timer_state=1; |
| | | beep_timer=0; |
| | | } |
| | | |
| | | } |
| | | |
| | | } else { |
| | | switch(g_com_map[ALARM_DEV]) |
| | | { |
| | | case 0: |
| | | BEEP2_OFF; |
| | | break; |
| | | case 1: |
| | | BEEP_OFF; |
| | | break; |
| | | case 2: |
| | | OUT2_OFF; |
| | | break; |
| | | default: |
| | | BEEP2_OFF; |
| | | BEEP_OFF; |
| | | OUT2_OFF; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if(g_com_map[ALARM_DISTANCE1]!=0||g_com_map[ALARM_DISTANCE2]!=0||g_com_map[ALARM_DISTANCE3]!=0||g_com_map[RELAY2_DISTANCE1]!=0||g_com_map[RELAY2_DISTANCE2]!=0||g_com_map[RELAY2_DISTANCE3]!=0) |
| | | { |
| | | if(beep_judge_cnt++ >= 100) |
| | | { |
| | | beep_judge_cnt = 0; |
| | | min_dist1=0x1ffff; |
| | | min_dist2=0x1ffff; |
| | | for(i = 0; i < taglist_num;i++) |
| | | { |
| | | if((tagid_list[i]>>12)!=9) |
| | | { |
| | | if(g_Tagdist[i] < min_dist1&&g_Tagdist[i]>g_com_map[ALARM_DISTANCE1]) |
| | | { |
| | | min_dist1=g_Tagdist[i]; |
| | | } |
| | | } |
| | | else{ |
| | | if(g_Tagdist[i] < min_dist2&&g_Tagdist[i]>g_com_map[RELAY2_DISTANCE1]) |
| | | { |
| | | min_dist2=g_Tagdist[i]; |
| | | } |
| | | } |
| | | } |
| | | Relay1Task(min_dist1); |
| | | Relay2Task(min_dist2); |
| | | AlarmJuge(); |
| | | } |
| | | }else{ |
| | | if(g_com_map[RELAY1ON_INDEX]==1) |
| | | { |
| | | RELAY1_ON; |
| | | }else if(g_com_map[RELAY1ON_INDEX]==0) |
| | | { |
| | | RELAY1_OFF; |
| | | } |
| | | if(g_com_map[RELAY2ON_INDEX]==1) |
| | | { |
| | | RELAY2_ON; |
| | | }else if(g_com_map[RELAY2ON_INDEX]==0) |
| | | { |
| | | RELAY2_OFF; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |