修复雷达蜂鸣器无法关闭问题,添加雷达开关功能,添加状态查询功能 zsxfly20240913

This commit is contained in:
zsx 2024-09-13 22:08:05 +08:00
parent 0553d9712a
commit 140696f581
3 changed files with 43 additions and 18 deletions

View File

@ -243,13 +243,19 @@ void radar_AUTO_BrakeORSpeedCut(uint8_t radar_id , uint16_t Car_Distance){ //距
uint8_t radar_flag_cnt=0; 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){ static tmr_tk_t radar_timer_handler(tmr_id_t id){
(void)(id); (void)(id);
if(Get_Status(OUT_Door_lock)){ if(Get_Status(OUT_Door_lock)){
// 定时发送状态信息 // 定时发送状态信息
if(radar_flag_cnt > 4){ if(radar_flag_cnt > 8){
uint8_t ret_data[20]={0,0}; uint8_t ret_data[20]={0,0};
radar_flag_cnt =0; radar_flag_cnt =0;
ret_data[radar_flag_cnt++] =BAT_Message.Bat_STA; // 电池状态 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); | ((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); app_uart_Sendcmd(UART1_PORT,0x10,0x01,ret_data,radar_flag_cnt);
radar_flag_cnt =0; radar_flag_cnt =0;
goto radar_end; return _MS(250);//300ms
}else { }else {
radar_flag_cnt++; radar_flag_cnt++;
} }
@ -283,27 +289,24 @@ static tmr_tk_t radar_timer_handler(tmr_id_t id){
radar_CMDSend_cnt =0; // 清空发送命令计数 radar_CMDSend_cnt =0; // 清空发送命令计数
DEBUG("ID =%d,distance =%d", radar_data.radar_id ,radar_data.distance); 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); DEBUG("Clear:CMD_cnt =%d", radar_CMDSend_cnt);
radar_CMDSend_cnt =0; // 清空发送命令计数 radar_CMDSend_cnt =0; // 清空发送命令计数
radar_AUTO_BrakeORSpeedCut(radar_data.radar_id , 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 // 根据倒车状态确定雷达ID
DEBUG("SendCMD:ID=%#02x", (1 == Get_Status(IN_Back)) ? RADAR_ID_Back : RADAR_ID_Front); 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_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]; static uint8_t radar_buff[9];

View File

@ -29,6 +29,9 @@ extern radar_daraframe_t radar_daraframe;
extern uint8_t radar_buff[]; extern uint8_t radar_buff[];
extern uint8_t Rec_lenght; extern uint8_t Rec_lenght;
// 雷达开关 //0:关 1:开
extern bool radar_ONOFF;
// 雷达测离初始化 // 雷达测离初始化
void app_radar_init(void); void app_radar_init(void);

View File

@ -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); app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,0x01,uart1_daraframe.data,uart1_daraframe.length);
break; break;
// case 0x04: case 0x04:
ret_data[length++] =BAT_Message.Bat_STA; // 电池状态
// break; 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 : default :
app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,uart1_daraframe.reg_addr,uart1_daraframe.data,uart1_daraframe.length); app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,uart1_daraframe.reg_addr,uart1_daraframe.data,uart1_daraframe.length);
break; break;