From e4d167a7d5e73b58a7d4adbc8b91499dc1e2d4c4 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期二, 01 四月 2025 11:08:41 +0800 Subject: [PATCH] 低功耗,逻辑正确,现在室外40ma,室内20ma电流 --- keil/uwb_app.c | 47 +++++++++++++++++++++++++++-------------------- 1 files changed, 27 insertions(+), 20 deletions(-) diff --git a/keil/uwb_app.c b/keil/uwb_app.c index 90ab06d..2bc97a0 100644 --- a/keil/uwb_app.c +++ b/keil/uwb_app.c @@ -289,6 +289,8 @@ uint8_t receive_error_flag; uint8_t rxnumoknum,rxnumerrornum; uint8_t resp_tx_flag; +extern uint8_t ceju_onlinetime; +extern uint8_t in_the_room_flag; static void rx_int_callback(struct MAC_HW_REPORT_T *rx_report) { uint8_t valid_sts=0; // Power off radio @@ -344,6 +346,8 @@ temp_count= phy_timer_count_get(); memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T)); rx_length = 0; +// ceju_onlinetime==0; +// in_the_room_flag++; receive_error_flag=1; OpenUWB();//再次开启UWB接收 } @@ -484,6 +488,8 @@ extern uint8_t in_the_room_flag; extern uint8_t lounei_flag; uint8_t ceju_onlinetime; +uint16_t last_id=0; +uint8_t ceju_leave_flag=0; void TagListUpdate(void) { uint16_t i,j=0,k=0; @@ -496,15 +502,27 @@ anchordata_bat[j]=anchordata_bat[i];//电量随之更新 anchor_rssi[j]=anchor_rssi[i]; tagofflinetime[j++]=tagofflinetime[i]; - in_the_room_flag=0; - ceju_onlinetime++; - } +// in_the_room_flag=0; + last_id=tagid_list[i]; + if(last_id=tagid_list[i]) + { + ceju_onlinetime++; + } + } } - if(ceju_onlinetime>0||taglist_num==0) +// if(ceju_onlinetime==0&&taglist_num==0) +// { +// in_the_room_flag=0; +// } +// if(ceju_onlinetime>1&&taglist_num==0) +// { +// in_the_room_flag=1; +// } + if(ceju_onlinetime>0&&taglist_num==0) { - ceju_onlinetime=0; - in_the_room_flag=1; + ceju_onlinetime=0; + ceju_leave_flag=1; } taglist_num=j; } @@ -834,23 +852,12 @@ tagdist_list[taglist_pos]=rec_ancdistlist[i]; anchordata_bat[taglist_pos] = battary;//保存该基站电量 anchor_rssi[taglist_pos]=rssi; -// in_the_room_flag=1; -// if(dev_id==g_com_map[DOOR_UWB_1]) -// { -// -// } -// if(dev_id==g_com_map[DOOR_UWB_2]) -// { -// -// } -// if(dev_id==g_com_map[DOOR_UWB_3]) -// { -// IN_THE_ROOM_FLAG=1; -// } + PCA9555_Set_One_Value_Output(GPS_POWER,1); if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中 { //tempid==dev_id 说明基站下发测距报文有这个标签的信息 taglist_num++; //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况 - tagid_list[taglist_pos] = tag_id_recv; + tagid_list[taglist_pos] = tag_id_recv; + PCA9555_Set_One_Value_Output(GPS_POWER,1); } break; } -- Gitblit v1.9.3