zhyinch
2022-01-13 f29299e0f55536545590f3813c122bcc7e069b00
Ô´Âë/ºËÐİå/Src/application/beep_logic_app.c
@@ -13,33 +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;
                }
         else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset2)
                {
                    beep_ontime = JDQ_time;
                    beep_timer = 0;
                    timer_state = 1;
                        }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)
                {
@@ -47,6 +74,7 @@
                    {
                        if(beep_timer++ < beep_ontime)
                        {
                                       RELAY2_ON;
                            RELAY1_ON;
                                 
                        }else{
@@ -56,6 +84,7 @@
                    }else{
                        if(beep_timer++ < beep_offtime)
                            {
                                             RELAY2_OFF;
                                RELAY1_OFF;
                       
                            }else{
@@ -66,7 +95,7 @@
                    }
                }else {
                    RELAY1_OFF;
                 //    RELAY2_OFF;
                     RELAY2_OFF;
                }
}
void Relay2Task(u16 min_dist)
@@ -80,6 +109,8 @@
                    beep_state2=2;
                    distoffset12=0;
                    distoffset22=0;
                    timer_state2=1;
                    beep_timer2=0;
                }
         else if (min_dist <= g_com_map[RELAY2_DISTANCE3]+distoffset22)
                {
@@ -93,6 +124,8 @@
                    beep_state2=0;
                    distoffset12=0;
                    distoffset22=0;
                    timer_state2=1;
                    beep_timer2=0;
                }
                
                if(beep_state2!=0)
@@ -123,6 +156,8 @@
                     RELAY2_OFF;
                }
}
#define RELAY2IDHEAD  9
extern u16 tagid_list[TAG_NUM_IN_SYS];
void main_logic(void)   //主逻辑在这里执行
{   
   uint16_t i;
@@ -133,22 +168,25 @@
            if(beep_judge_cnt++ >= 100)
            {   
                beep_judge_cnt = 0;
                min_dist1=0xffff;
                min_dist2=0xffff;
                min_dist1=0x1ffff;
                min_dist2=0x1ffff;
                for(i = 0; i < 255;i++)
                {
                           if((tagid_list[i]>>12)!=RELAY2IDHEAD)
                           {
                    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);
                Relay1Task();
               // Relay2Task(min_dist2);
         
            }
    }else{