From 2c162b948f68bde8d17cb5e86d18a8972b5661f2 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期二, 22 七月 2025 18:18:05 +0800 Subject: [PATCH] 修改传aoa信息逻辑为读取指令发送时并且为自身id才给,取消发送区域显示逻辑,将信号质量改为角度置信度 --- keil/uwb_app.c | 81 +++++++++++++++++++++++++++++----------- 1 files changed, 59 insertions(+), 22 deletions(-) diff --git a/keil/uwb_app.c b/keil/uwb_app.c index c35c51d..7e803c9 100644 --- a/keil/uwb_app.c +++ b/keil/uwb_app.c @@ -333,7 +333,7 @@ uint32_t range_timeout_us = 2000000;//yuan5000 uint8_t flag_temp2,flag_temp1; uint16_t uwb_losttimer; -uint8_t mac_error; +//uint8_t mac_error; uint8_t allow_flag; uint8_t resp_tx_flag,poll_rx_error_num; uint8_t tag_rssi[TAG_NUM_IN_SYS]; @@ -355,6 +355,7 @@ //} } float temp1,temp2; +uint8_t aoa_fom[TAG_NUM_IN_SYS]; static void angle_result_filter(uint8_t *mac_addr, int16_t *angle, uint8_t type) { if (angle == NULL) @@ -411,13 +412,14 @@ angle_result_filter(&mac_addr,&elevation, KF_DATA_TYPE_ELEVATION); angle_azimuth[taglist_pos]=(uint16_t)mk_q7_to_s16(azimuth); angle_elevation[taglist_pos]=(uint16_t)mk_q7_to_s16(elevation); + aoa_fom[taglist_pos]=fom; //buffer_message_send(); //int16_t azimth=mk_q7_to_s16(azimuth),elevate=mk_q7_to_s16(elevation); // // filter process - LOG_INFO(TRACE_MODULE_APP, "PDoA 0x%04x Azimuth %d Elevation %d FoM %u area%#x\r\n",tag_id_recv, mk_q7_to_s16(azimuth), - mk_q7_to_s16(elevation), fom,show_location[taglist_pos]); + LOG_INFO(TRACE_MODULE_APP, "PDoA 0x%04x Azimuth %d Elevation %d FoM %u \r\n",tag_id_recv, mk_q7_to_s16(azimuth), + mk_q7_to_s16(elevation), fom); allow_flag=0; } } @@ -477,7 +479,7 @@ OpenUWB();//再次开启UWB接收 //LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num); }else{ - mac_error=1; + //mac_error=1; } } uint32_t start_receive_count,end_receive_count,poll_timeout,current_count,temp_resp; @@ -485,8 +487,8 @@ extern uint32_t tag_id_authorization_list[1024]; static uint8_t anchordata_bat[TAG_NUM_IN_SYS]; uint8_t anchordata_num = 0; -static int32_t tagdist_list[TAG_NUM_IN_SYS]; -uint8_t rssi_quality[TAG_NUM_IN_SYS]; +static int16_t tagdist_list[TAG_NUM_IN_SYS]; + uint16_t state_button[TAG_NUM_IN_SYS]; uint16_t pressure[TAG_NUM_IN_SYS]; uint16_t random_time; @@ -618,7 +620,7 @@ tagid_list[j] = tagid_list[j + 1]; tagid_list[j + 1] = temp_id; - //同步交换电量是否授权表和在线时间 + //同步交换电量 uint32_t temp_bat = anchordata_bat[j]; anchordata_bat[j]=anchordata_bat[j+1];//电量随之更新 anchordata_bat[j+1]=temp_bat; @@ -628,6 +630,38 @@ tagofflinetime[j]=tagofflinetime[j+1];//电量随之更新 tagofflinetime[j+1]=temp_tag_offlinetime; + //水平角度交换 + uint16_t temp_tag_azimuth=angle_azimuth[j]; + angle_azimuth[j]=angle_azimuth[j+1]; + angle_azimuth[j+1]=temp_tag_azimuth; + //垂直角度交换 + uint16_t temp_tag_elevation=angle_elevation[j]; + angle_elevation[j]=angle_elevation[j+1]; + angle_elevation[j+1]=temp_tag_elevation; + //信号强度交换 + uint8_t rssi_temp=tag_rssi[j]; + tag_rssi[j]=tag_rssi[j+1]; + tag_rssi[j+1]=rssi_temp; + //角度置信度交换 + uint8_t temp_fom=aoa_fom[j]; + aoa_fom[j]=aoa_fom[j+1]; + aoa_fom[j+1]=temp_fom; + //设备状态交换 + uint16_t temp_state=state_button[j]; + state_button[j]=state_button[j+1]; + state_button[j+1]=temp_state; + //气压交换 + uint16_t temp_pressure=pressure[j]; + pressure[j]=pressure[j+1]; + pressure[j+1]=temp_pressure; + //包序交换 + uint8_t seq_temp=tag_seq[j]; + tag_seq[j]=tag_seq[j+1]; + tag_seq[j+1]=seq_temp; + //showbuffer交换 + uint8_t show_location_temp=show_location[j]; + show_location[j]=show_location[j+1]; + show_location[j+1]=show_location_temp; // //同步交换授权表 // uint8_t temp_tag_authorized = tag_authorized_List[j]; // tag_authorized_List[j]=tag_authorized_List[j+1];//电量随之更新 @@ -666,13 +700,12 @@ } taglist_num=j; sort_tag_lists();//增加距离小的排到前面逻辑 - update_show_buffer();//根据角度和距离判断区域位置 - gpio_pin_set(CHANGE_UART_PIN);//;拉高打印输出 - buffer_message_send();//发送测距报文信息 -// //delay_ms(10); - buffer_485_send(show_location);//发送显示信息 - while(uart_tx_in_progress(UART_ID0)); - gpio_pin_clr(CHANGE_UART_PIN);//;拉低变接收 + //update_show_buffer();//根据角度和距离判断区域位置 +// gpio_pin_set(CHANGE_UART_PIN);//;拉高打印输出 + //buffer_message_send();//发送测距报文信息 + //buffer_485_send(show_location);//发送显示信息 +// while(uart_tx_in_progress(UART_ID0)); +// gpio_pin_clr(CHANGE_UART_PIN);//;拉低变接收 } uint8_t position; @@ -791,6 +824,7 @@ uwb_rx_flag=1; //LOG_INFO(TRACE_MODULE_APP,"打开uwb_rx\r\n"); } +//uint8_t temp_tag_num; void UWBOneSecondTask(void) { TagListUpdate();//更新标签数 @@ -978,11 +1012,11 @@ #define AREA_8 0xa8 uint8_t change_by_distance(uint8_t position,uint16_t distance) { -if(distance<1000){ +if(distance<g_com_map[ALARM_DISTANCE1]){ position=position; -}else if (distance>1000&&distance<2000){ +}else if (distance>g_com_map[ALARM_DISTANCE1]&&distance<g_com_map[ALARM_DISTANCE2]){ position=position+16; -}else if (distance>2000&&distance<3000){ +}else if (distance>g_com_map[ALARM_DISTANCE2]&&distance<g_com_map[ALARM_DISTANCE3]){ position=position+16; } return position; @@ -1046,21 +1080,24 @@ memcpy(&usart0_send[4],&dev_id,2); //anchor_id for(uint8_t i=0;i<taglist_num;i++) { - memcpy(&usart0_send[6+i*16],tagid_list[i],2); - usart0_send[8+i*20] = tag_seq[i];//包序 + memcpy(&usart0_send[6+i*16],&tagid_list[i],2); + usart0_send[8+i*16] = tag_seq[i];//包序 memcpy(&usart0_send[9+i*16],&tagdist_list[i],2); //distance memcpy(&usart0_send[11+i*16],&angle_azimuth[i],2);//angle_azithum memcpy(&usart0_send[13+i*16],&angle_elevation[i],2);//angle_elevation memcpy(&usart0_send[15+i*16],&tag_rssi[i],1); //信号强度 - memcpy(&usart0_send[16+i*16],&rssi_quality[i],1); //信号质量预留 - usart0_send[17+i*20]=anchordata_bat[i];//标签电量 + memcpy(&usart0_send[16+i*16],&aoa_fom[i],1); //信号质量预留 + usart0_send[17+i*16]=anchordata_bat[i];//标签电量 memcpy(&usart0_send[18+i*16],&state_button[i],2); //设备状态 memcpy(&usart0_send[20+i*16],&pressure[i],2); //气压 } memcpy(&usart0_send[6+taglist_num*16],&yuliu,4); //预留位4位 checksum = Checksum_u16(&usart0_send[2],8+16*taglist_num); memcpy(&usart0_send[10+16*taglist_num], &checksum, 2); + gpio_pin_set(CHANGE_UART_PIN);//;拉高打印输出 uart_send(UART_ID0, usart0_send,12+16*taglist_num, NULL); + while(uart_tx_in_progress(UART_ID0)); + gpio_pin_clr(CHANGE_UART_PIN);//;拉低变接收 } int Anchor_App(void) { @@ -1301,7 +1338,7 @@ static struct KF_MAT_VALUE_CACHE_T kf_mat_value_cache[KF_SUPPORT_NUM]; void Anchor_uwb_aoa_square_init(void) { - uwb_open(); + // Set calibration parameters uwb_calibration_params_set(config.phy_cfg.ch_num); -- Gitblit v1.9.3