From 1d51ac11e1da7c9b55da8c8b3a7e3756cc5f4ad8 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期五, 08 三月 2024 18:19:16 +0800 Subject: [PATCH] 阶段性调试完毕 可以测距跟给网关发送。 --- Src/application/dw_mbx_tag.c | 86 ++++++++++++++++++++++++++++--------------- 1 files changed, 56 insertions(+), 30 deletions(-) diff --git a/Src/application/dw_mbx_tag.c b/Src/application/dw_mbx_tag.c index dbce8e8..ba051b9 100644 --- a/Src/application/dw_mbx_tag.c +++ b/Src/application/dw_mbx_tag.c @@ -128,8 +128,10 @@ } return i; } +extern uint8_t gps_state; uint32_t temp231; extern uint32_t uwbled,gpsled,loraled,powerled; +uint32_t uwbdezhuangtai; void MbxTagUwbRec(void) { @@ -138,10 +140,10 @@ uint32_t rec_syncid,status_reg; uint16_t checksum; uint8_t kk; - dwt_setrxtimeout(3000);//设定接收超时时间,0位没有超时时间 dwt_rxenable(0);//打开接收 - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET); +// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_SET); +// printf("成功接收LORA\r\n"); temp231 = dwt_read32bitreg(CHAN_CTRL_ID) ; start_time=HAL_LPTIM_ReadCounter(&hlptim1); timeout=100; //单位0.1ms @@ -156,7 +158,8 @@ if(current_time>=end_time&¤t_time<end_time+15000) break; }; - + uwbdezhuangtai=status_reg; +// printf("UWB状态:%x\r\n",uwbdezhuangtai); if (status_reg & SYS_STATUS_RXFCG && status_reg!=0xffffffff)//成功接收 { uint16_t tag_recv_interval; @@ -168,7 +171,8 @@ dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2); //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据 - memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); + memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); +//gps_state=tag_id_recv; switch(rx_buffer[MESSAGE_TYPE_IDX]) {uint8_t target_tagi; case MBX_REG: @@ -229,7 +233,11 @@ dwt_forcetrxoff(); dwt_entersleep(); - +//printf("UWB状态:%x\r\n",uwbdezhuangtai); +//printf("ID:%x\r\n",tag_id_recv); +//printf("测距:%x\r\n",rec_ancdistlist[0]); +//uwbdezhuangtai=0; +//tag_id_recv=0; } wg_state_enum wg_state = WG_Lost; uint8_t lora_sendbuffer[200]; @@ -237,25 +245,26 @@ extern u8 wg_lost_count; uint16_t wg_report_freq,wg_report_id; #define WG_LOST_SWITCH_THRES 3 -#define WG_LOST_NOUWB_COUNT 30 -u8 closeuwb_flag; +#define WG_LOST_NOUWB_COUNT 60 +#define DEFAULT_WG_ID 0xFFFF +u8 lora_jianting_flag = 1; void LoraReportFreqPoll(void) { if(wg_lost_count++>WG_LOST_NOUWB_COUNT) { - closeuwb_flag = 1; - }else{ - closeuwb_flag = 0; + lora_jianting_flag = 0; + } else { + lora_jianting_flag = 1; } if(wg_state==WG_Lost) { - wg_report_id = 0xffff; + wg_report_id = DEFAULT_WG_ID; wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。 - }else{ - if(wg_lost_count>WG_LOST_SWITCH_THRES) - { - wg_state = WG_Lost; - } + } else { + if(wg_lost_count>WG_LOST_SWITCH_THRES) + { + wg_state = WG_Lost; + } } } static u16 checksum; @@ -285,14 +294,14 @@ void LoraReportPoll(void) { // delay_ms(100); -#ifdef _USE_BAR - GetPressAndHeight(); - intheight = Height*100; -#endif - #ifdef _SMT_TEST - printf("气压值:%d",intheight); - #endif - +//#ifdef _USE_BAR +// GetPressAndHeight(); +// intheight = Height*100; +//#endif +// #ifdef _SMT_TEST +// printf("气压值:%d",intheight); +// #endif +// printf("LORA发送\r\n"); if(sendcount++>0) TagListUpdate(); @@ -313,7 +322,7 @@ lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG; lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+ANCID_IDX; #endif - +// 2000f026 02020002 //000220200 memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); lora_sendbuffer[SEQNUM_IDX] = seq_num++; @@ -328,6 +337,23 @@ lora_sendbuffer[GPS_SPOWER_IDX] = gps_signalpower; lora_sendbuffer[GPS_CHAFENLINGQI] = gps_chafenlingqi; #endif + for(u16 i=0; i<report_ancnum-1; i++) + { + for(u16 j=0; j<report_ancnum-1-i; j++) + { + if(report_ancdist[j]>report_ancdist[j+1]) + { + u16 id,dist; + u8 bat; + id = report_ancid[j]; + dist = report_ancdist[j]; + report_ancid[j] = report_ancid[j+1]; + report_ancdist[j] = report_ancdist[j+1]; + report_ancid[j+1] = id; + report_ancdist[j+1] = dist; + } + } + } memcpy(&lora_sendbuffer[BAR_HEIGHT_IDX],&intheight,2); lora_sendbuffer[ANCNUM_IDX] = report_ancnum; memcpy(&lora_sendbuffer[ANCID_IDX],report_ancid,report_ancnum*2); @@ -338,11 +364,11 @@ // LED_TB_ON; bat_percent=Get_Battary(); - #ifdef _USE_BAR_ - //if(taglist_total_num>0) - { +// #ifdef _USE_BAR_ +// //if(taglist_total_num>0) +// { GetPressAndHeight(); intheight = Height*100; - } -#endif +// } +//#endif } -- Gitblit v1.9.3