From 140696f581db0c8505c9a06e08b9d5bf147d2687 Mon Sep 17 00:00:00 2001 From: zsx <1543588107@qq.com> Date: Fri, 13 Sep 2024 22:08:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9B=B7=E8=BE=BE=E8=9C=82?= =?UTF-8?q?=E9=B8=A3=E5=99=A8=E6=97=A0=E6=B3=95=E5=85=B3=E9=97=AD=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=9B=B7=E8=BE=BE=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD=20zsxfly20240913?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/blezongkong/src/app_radar.c | 31 +++++++++++++++------------- projects/blezongkong/src/app_radar.h | 3 +++ projects/blezongkong/src/app_uart.c | 27 ++++++++++++++++++++---- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/projects/blezongkong/src/app_radar.c b/projects/blezongkong/src/app_radar.c index 009c22d..0a17b91 100644 --- a/projects/blezongkong/src/app_radar.c +++ b/projects/blezongkong/src/app_radar.c @@ -243,13 +243,19 @@ void radar_AUTO_BrakeORSpeedCut(uint8_t radar_id , uint16_t Car_Distance){ //距 uint8_t radar_flag_cnt=0; +static uint8_t new_state_cnt=3;//标记状态是否变化 + +// 雷达开关 //0:关 1:开 +bool radar_ONOFF =1; + + // 定时处理数和获取数据 static tmr_tk_t radar_timer_handler(tmr_id_t id){ (void)(id); if(Get_Status(OUT_Door_lock)){ // 定时发送状态信息 - if(radar_flag_cnt > 4){ + if(radar_flag_cnt > 8){ uint8_t ret_data[20]={0,0}; radar_flag_cnt =0; ret_data[radar_flag_cnt++] =BAT_Message.Bat_STA; // 电池状态 @@ -270,7 +276,7 @@ static tmr_tk_t radar_timer_handler(tmr_id_t id){ | ((PAD_User_Mode)<<5) | ((SYS_AUTO_Speed_Cut)<<6) | ((SYS_AUTO_brake)<<7); app_uart_Sendcmd(UART1_PORT,0x10,0x01,ret_data,radar_flag_cnt); radar_flag_cnt =0; - goto radar_end; + return _MS(250);//300ms }else { radar_flag_cnt++; } @@ -283,27 +289,24 @@ static tmr_tk_t radar_timer_handler(tmr_id_t id){ radar_CMDSend_cnt =0; // 清空发送命令计数 DEBUG("ID =%d,distance =%d", radar_data.radar_id ,radar_data.distance); } - if((radar_CMDSend_cnt !=0)){ + if((radar_CMDSend_cnt !=0)||(1 ==new_state_cnt)){// DEBUG("Clear:CMD_cnt =%d", radar_CMDSend_cnt); radar_CMDSend_cnt =0; // 清空发送命令计数 radar_AUTO_BrakeORSpeedCut(radar_data.radar_id , 0);//复位自动刹车和减速状态 } - + if(new_state_cnt > 0){ + new_state_cnt--; + } // 进入游客模式开启雷达 //管理员模式优先于游客模式 - if(Get_Status(OUT_Door_lock) && !(PAD_Manager_Mode || Get_Status(IN_Manager_Mode))){ + if(Get_Status(OUT_Door_lock) && !(PAD_Manager_Mode || Get_Status(IN_Manager_Mode)) && (1 == radar_ONOFF)){ // 根据倒车状态确定雷达ID DEBUG("SendCMD:ID=%#02x", (1 == Get_Status(IN_Back)) ? RADAR_ID_Back : RADAR_ID_Front); - app_radar_Sendcmd((1 == Get_Status(IN_Back)) ? RADAR_ID_Back : RADAR_ID_Front,RADAR_MODE_Real); + app_radar_Sendcmd((1 == Get_Status(IN_Back)) ? RADAR_ID_Back : RADAR_ID_Front ,RADAR_MODE_Real); + new_state_cnt =3; radar_CMDSend_cnt++; -// //____________ -// radar_NewData_flag =1; -// radar_data.radar_id = RADAR_ID_Front; -// radar_data.distance =1000; -// radar_AUTO_BrakeORSpeedCut(radar_data.radar_id ,radar_data.distance); -// //—————————————————————————————— } -radar_end: - return _MS(250);//300ms + + return _MS(150);//300ms } static uint8_t radar_buff[9]; diff --git a/projects/blezongkong/src/app_radar.h b/projects/blezongkong/src/app_radar.h index f6b060a..97c0cd3 100644 --- a/projects/blezongkong/src/app_radar.h +++ b/projects/blezongkong/src/app_radar.h @@ -29,6 +29,9 @@ extern radar_daraframe_t radar_daraframe; extern uint8_t radar_buff[]; extern uint8_t Rec_lenght; +// 雷达开关 //0:关 1:开 +extern bool radar_ONOFF; + // 雷达测离初始化 void app_radar_init(void); diff --git a/projects/blezongkong/src/app_uart.c b/projects/blezongkong/src/app_uart.c index 83eb5e9..2eab4b0 100644 --- a/projects/blezongkong/src/app_uart.c +++ b/projects/blezongkong/src/app_uart.c @@ -91,10 +91,29 @@ static void app_uart1_hande(void){ } app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,0x01,uart1_daraframe.data,uart1_daraframe.length); break; - // case 0x04: - - // break; - + case 0x04: + ret_data[length++] =BAT_Message.Bat_STA; // 电池状态 + ret_data[length++] =BAT_Message.Bat_Voltage >> 8; //电池电压 + ret_data[length++] =BAT_Message.Bat_Voltage & 0xff; + ret_data[length++] =get_in_acc_percent();// 当前油门百分比 + ret_data[length++] =radar_daraframe.Front_data /100;// 前雷达距离信息 + ret_data[length++] =radar_daraframe.Back_data/100;// 后雷达距离信息 + // 读取系统配置 + ret_data[length++]=sys_conf_info.M_mode_sLim; + ret_data[length++]=sys_conf_info.U_mode_sLim; + ret_data[length++]=sys_conf_info.AUTO_Brake_Distance; + ret_data[length++]=sys_conf_info.AUTO_Speed_Cut_Distance; + ret_data[length++]=sys_conf_info.AUTO_Brake_Distance_B; + ret_data[length++]=sys_conf_info.AUTO_Speed_Cut_Distance_B; + ret_data[length++] =(Get_Status(IN_GPS)<<0) | (Get_Status(IN_Back)<<1) | (Get_Status(OUT_Low_brake)<<2) + | (Get_Status(IN_Manager_Mode)<<3) | ((PAD_Manager_Mode)<<4) + | ((PAD_User_Mode)<<5) | ((SYS_AUTO_Speed_Cut)<<6) | ((SYS_AUTO_brake)<<7); + app_uart_Sendcmd(UART1_PORT,0x4,0x01,ret_data,length); + break; + case 0x05: //0 关闭雷达//1 启用雷达 + radar_ONOFF = 0 == uart1_daraframe.data[0] ? 0 : 1; + app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,0x01,uart1_daraframe.data,uart1_daraframe.length); + break; default : app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,uart1_daraframe.reg_addr,uart1_daraframe.data,uart1_daraframe.length); break;