From e439651823db705ce10a541452bfce2af970a152 Mon Sep 17 00:00:00 2001 From: wjw Date: Fri, 18 Jul 2025 09:43:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=B7=E8=BE=BE=E3=80=81=E6=99=AF=E7=82=B9?= =?UTF-8?q?=E6=92=AD=E6=8A=A5=E5=8A=9F=E8=83=BD=E6=B5=8B=E8=AF=95=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E6=9A=82=E6=97=B6=E5=85=B3=E9=97=AD=E7=A6=81?= =?UTF-8?q?=E5=8C=BA=E9=94=81=E8=BD=A6=E6=92=AD=E6=8A=A5=E7=AD=89=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E7=94=B5=E5=AD=90=E5=9B=B4=E6=A0=8F=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E3=80=81=E4=BD=8D=E7=BD=AE=E4=BF=A1=E6=81=AF=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E5=8A=9F=E8=83=BD=E5=BE=85=E5=AE=8C=E5=96=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom/control_out/src/control_out.c | 8 +++++++- custom/jt808/src/jt808_set_TermParam.c | 8 ++++---- custom/radar/src/radar.c | 24 +++++++++++++++++++++--- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/custom/control_out/src/control_out.c b/custom/control_out/src/control_out.c index daa5c56..172f469 100644 --- a/custom/control_out/src/control_out.c +++ b/custom/control_out/src/control_out.c @@ -6,6 +6,8 @@ #include "local_tts.h" #include "control_out.h" +#include "radar.h" + #define ADC_DAC_DEBUG_ENABLE 0 @@ -224,7 +226,7 @@ void control_out_task(void *argument){ sys_sta.IO_RX_back = level; // 0:倒车模式,1:正常模式 // DEBUG("IO_RX_back:%d\r\n",level); } - // 刹车状态 + // 刹车状态 if(1 == sys_sta.A_brake){ // 自动刹车触发 cm_gpio_set_direction(IO_TX_BRAKE, CM_GPIO_DIRECTION_OUTPUT); cm_gpio_set_level(IO_TX_BRAKE, 0); // 打开刹车 @@ -294,11 +296,15 @@ void control_out_task(void *argument){ cm_gpio_set_level(OUT_Door_lock, 1); // 打开电门锁 uint8_t acc_percent =0; if((1 == sys_sta.MAG_MODE)&&(1 == sys_sta.PLT_MODE )){ // 游客模式 + + osMutexAcquire(radar_mutex, osWaitForever); if(sys_sta.A_Speed_Cut){ // 自动减速 acc_percent = (in_acc_percent * SYS_CONF_SPEED_CUT_ACC) / 100.0; }else{ acc_percent = (in_acc_percent * SYS_CONF_TOURIST_ACC) / 100.0; } + osMutexRelease(radar_mutex); + }else{ // 管理员模式 acc_percent = (in_acc_percent * SYS_CONF_MANAGER_ACC) / 100.0; } diff --git a/custom/jt808/src/jt808_set_TermParam.c b/custom/jt808/src/jt808_set_TermParam.c index aedc1af..3f24257 100644 --- a/custom/jt808/src/jt808_set_TermParam.c +++ b/custom/jt808/src/jt808_set_TermParam.c @@ -530,14 +530,14 @@ void jt808_LocReport_param_update(void){ delay_off_count++; if(delay_off_count >= jt808_term_param_item.set_term_param.Ban_Fence_Polygon_Delay_OFF){ // 30S delay_off_count = 0; - sys_sta.O_door_lock = 0; // 锁车 - Rsp_locked_condition = 1; // 锁车状态 - local_tts_text_play("已锁车,请联系管理员解除禁止入内限制!",0,0); + // sys_sta.O_door_lock = 0; // 锁车 + // Rsp_locked_condition = 1; // 锁车状态 + // local_tts_text_play("已锁车,请联系管理员解除禁止入内限制!",0,0); } ban_Fence_Polygon_count++; if(ban_Fence_Polygon_count >= 10){ // 7S ban_Fence_Polygon_count = 0; - local_tts_text_play("您已进入禁区,请尽快离开!",0,0); + // local_tts_text_play("您已进入禁区,请尽快离开!",0,0); } }else{ delay_off_count = 0; diff --git a/custom/radar/src/radar.c b/custom/radar/src/radar.c index 66371a4..daa4b34 100644 --- a/custom/radar/src/radar.c +++ b/custom/radar/src/radar.c @@ -59,6 +59,7 @@ static void radar_AUTO_BrakeORSpeedCut(uint8_t radar_id , uint16_t Car_Distance) uint16_t Brake_Distance = ((radar_id == RADAR_ID_Back )? SYS_CONF_BRAKE_LIMIT_B : SYS_CONF_BRAKE_LIMIT); // 自动减速距离 uint16_t Speed_Cut_Distance = ((radar_id == RADAR_ID_Back )? SYS_CONF_SPEED_CUT_LIMIT_B : SYS_CONF_SPEED_CUT_LIMIT); + if((35 < Car_Distance) && Car_Distance < Brake_Distance){//小于自动刹车距离时 if(!sys_sta.A_brake){ @@ -84,6 +85,8 @@ static void radar_AUTO_BrakeORSpeedCut(uint8_t radar_id , uint16_t Car_Distance) sys_sta.A_brake =0; sys_sta.A_Speed_Cut=0; } + + } static uint8_t radar_CMDSend_cnt=0; // 发送命令计数 @@ -130,12 +133,18 @@ static void RADAR_TaskHandle(void *param){ uint16_t time_count =0; while(1){ + + if(0==sys_sta.P_Radar_EN) { sys_sta.A_Speed_Cut =0; // 清空自动减速状态 sys_sta.A_brake =0; // 清空自动刹车状态 + DEBUG("radar close\r\n"); // 任务开始 + continue; } + + DEBUG("radar open\r\n"); // 任务开始 osMutexAcquire(radar_mutex, osWaitForever); if (1==sys_sta.P_Radar_EN) @@ -150,16 +159,22 @@ static void RADAR_TaskHandle(void *param){ radar_AUTO_BrakeORSpeedCut(radar_data.radar_id , 0); // 复位自动刹车和减速状态 } } + // 进入游客模式开启雷达 //管理员模式优先于游客模式 if(((0 != sys_sta.O_door_lock) && ((1 == sys_sta.MAG_MODE)&&(1 == sys_sta.PLT_MODE ))) && (1 == sys_sta.P_Radar_EN)){ // 根据倒车状态确定雷达ID // DEBUG("SendCMD:ID=%#02x", (0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front); radar_Sendcmd((0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front, RADAR_MODE_Real); + + }else{ sys_sta.A_Speed_Cut =0; // 清空自动减速状态 sys_sta.A_brake =0; // 清空自动刹车状态 } + + + } @@ -169,15 +184,18 @@ static void RADAR_TaskHandle(void *param){ sys_sta.A_Speed_Cut =0; // 清空自动减速状态 sys_sta.A_brake =0; // 清空自动刹车状态 - if(time_count>=100) + if(time_count>=1000) { sys_sta.P_Radar_EN=1; time_count=0; } - + + + } - + DEBUG("radar done\r\n"); // 任务结束 + osMutexRelease(radar_mutex); osDelay(140/5); // 140ms }