雷达、景点播报功能测试完成,暂时关闭禁区锁车播报等功能,电子围栏删除、位置信息上报功能待完善。

This commit is contained in:
wjw 2025-07-18 09:43:12 +08:00
parent 712c1f5b41
commit e439651823
3 changed files with 32 additions and 8 deletions

View File

@ -6,6 +6,8 @@
#include "local_tts.h" #include "local_tts.h"
#include "control_out.h" #include "control_out.h"
#include "radar.h"
#define ADC_DAC_DEBUG_ENABLE 0 #define ADC_DAC_DEBUG_ENABLE 0
@ -224,7 +226,7 @@ void control_out_task(void *argument){
sys_sta.IO_RX_back = level; // 0:倒车模式,1:正常模式 sys_sta.IO_RX_back = level; // 0:倒车模式,1:正常模式
// DEBUG("IO_RX_back:%d\r\n",level); // DEBUG("IO_RX_back:%d\r\n",level);
} }
// 刹车状态 // 刹车状态
if(1 == sys_sta.A_brake){ // 自动刹车触发 if(1 == sys_sta.A_brake){ // 自动刹车触发
cm_gpio_set_direction(IO_TX_BRAKE, CM_GPIO_DIRECTION_OUTPUT); cm_gpio_set_direction(IO_TX_BRAKE, CM_GPIO_DIRECTION_OUTPUT);
cm_gpio_set_level(IO_TX_BRAKE, 0); // 打开刹车 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); // 打开电门锁 cm_gpio_set_level(OUT_Door_lock, 1); // 打开电门锁
uint8_t acc_percent =0; uint8_t acc_percent =0;
if((1 == sys_sta.MAG_MODE)&&(1 == sys_sta.PLT_MODE )){ // 游客模式 if((1 == sys_sta.MAG_MODE)&&(1 == sys_sta.PLT_MODE )){ // 游客模式
osMutexAcquire(radar_mutex, osWaitForever);
if(sys_sta.A_Speed_Cut){ // 自动减速 if(sys_sta.A_Speed_Cut){ // 自动减速
acc_percent = (in_acc_percent * SYS_CONF_SPEED_CUT_ACC) / 100.0; acc_percent = (in_acc_percent * SYS_CONF_SPEED_CUT_ACC) / 100.0;
}else{ }else{
acc_percent = (in_acc_percent * SYS_CONF_TOURIST_ACC) / 100.0; acc_percent = (in_acc_percent * SYS_CONF_TOURIST_ACC) / 100.0;
} }
osMutexRelease(radar_mutex);
}else{ // 管理员模式 }else{ // 管理员模式
acc_percent = (in_acc_percent * SYS_CONF_MANAGER_ACC) / 100.0; acc_percent = (in_acc_percent * SYS_CONF_MANAGER_ACC) / 100.0;
} }

View File

@ -530,14 +530,14 @@ void jt808_LocReport_param_update(void){
delay_off_count++; delay_off_count++;
if(delay_off_count >= jt808_term_param_item.set_term_param.Ban_Fence_Polygon_Delay_OFF){ // 30S if(delay_off_count >= jt808_term_param_item.set_term_param.Ban_Fence_Polygon_Delay_OFF){ // 30S
delay_off_count = 0; delay_off_count = 0;
sys_sta.O_door_lock = 0; // 锁车 // sys_sta.O_door_lock = 0; // 锁车
Rsp_locked_condition = 1; // 锁车状态 // Rsp_locked_condition = 1; // 锁车状态
local_tts_text_play("已锁车,请联系管理员解除禁止入内限制!",0,0); // local_tts_text_play("已锁车,请联系管理员解除禁止入内限制!",0,0);
} }
ban_Fence_Polygon_count++; ban_Fence_Polygon_count++;
if(ban_Fence_Polygon_count >= 10){ // 7S if(ban_Fence_Polygon_count >= 10){ // 7S
ban_Fence_Polygon_count = 0; ban_Fence_Polygon_count = 0;
local_tts_text_play("您已进入禁区,请尽快离开!",0,0); // local_tts_text_play("您已进入禁区,请尽快离开!",0,0);
} }
}else{ }else{
delay_off_count = 0; delay_off_count = 0;

View File

@ -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 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); 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((35 < Car_Distance) && Car_Distance < Brake_Distance){//小于自动刹车距离时
if(!sys_sta.A_brake){ 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_brake =0;
sys_sta.A_Speed_Cut=0; sys_sta.A_Speed_Cut=0;
} }
} }
static uint8_t radar_CMDSend_cnt=0; // 发送命令计数 static uint8_t radar_CMDSend_cnt=0; // 发送命令计数
@ -130,12 +133,18 @@ static void RADAR_TaskHandle(void *param){
uint16_t time_count =0; uint16_t time_count =0;
while(1){ while(1){
if(0==sys_sta.P_Radar_EN) if(0==sys_sta.P_Radar_EN)
{ {
sys_sta.A_Speed_Cut =0; // 清空自动减速状态 sys_sta.A_Speed_Cut =0; // 清空自动减速状态
sys_sta.A_brake =0; // 清空自动刹车状态 sys_sta.A_brake =0; // 清空自动刹车状态
DEBUG("radar close\r\n"); // 任务开始
continue; continue;
} }
DEBUG("radar open\r\n"); // 任务开始
osMutexAcquire(radar_mutex, osWaitForever); osMutexAcquire(radar_mutex, osWaitForever);
if (1==sys_sta.P_Radar_EN) 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); // 复位自动刹车和减速状态 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)){ if(((0 != sys_sta.O_door_lock) && ((1 == sys_sta.MAG_MODE)&&(1 == sys_sta.PLT_MODE ))) && (1 == sys_sta.P_Radar_EN)){
// 根据倒车状态确定雷达ID // 根据倒车状态确定雷达ID
// DEBUG("SendCMD:ID=%#02x", (0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front); // 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); radar_Sendcmd((0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front, RADAR_MODE_Real);
}else{ }else{
sys_sta.A_Speed_Cut =0; // 清空自动减速状态 sys_sta.A_Speed_Cut =0; // 清空自动减速状态
sys_sta.A_brake =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_Speed_Cut =0; // 清空自动减速状态
sys_sta.A_brake =0; // 清空自动刹车状态 sys_sta.A_brake =0; // 清空自动刹车状态
if(time_count>=100) if(time_count>=1000)
{ {
sys_sta.P_Radar_EN=1; sys_sta.P_Radar_EN=1;
time_count=0; time_count=0;
} }
} }
DEBUG("radar done\r\n"); // 任务结束
osMutexRelease(radar_mutex); osMutexRelease(radar_mutex);
osDelay(140/5); // 140ms osDelay(140/5); // 140ms
} }