PAD通信协议优化 zsxfly20240819
This commit is contained in:
parent
91135a05fe
commit
c95d8275c2
File diff suppressed because it is too large
Load Diff
|
@ -3633,9 +3633,9 @@
|
||||||
</Doc>
|
</Doc>
|
||||||
<Doc>
|
<Doc>
|
||||||
<Name>..\src\app_radar.c</Name>
|
<Name>..\src\app_radar.c</Name>
|
||||||
<ColumnNumber>0</ColumnNumber>
|
<ColumnNumber>23</ColumnNumber>
|
||||||
<TopLine>82</TopLine>
|
<TopLine>82</TopLine>
|
||||||
<CurrentLine>101</CurrentLine>
|
<CurrentLine>102</CurrentLine>
|
||||||
<Folding>1</Folding>
|
<Folding>1</Folding>
|
||||||
<ContractedFolders></ContractedFolders>
|
<ContractedFolders></ContractedFolders>
|
||||||
<PaneID>0</PaneID>
|
<PaneID>0</PaneID>
|
||||||
|
|
|
@ -18,44 +18,125 @@ static void PAD_Data_Hande(void){
|
||||||
uint8_t ret_data[MAX_LEN]={0,0};
|
uint8_t ret_data[MAX_LEN]={0,0};
|
||||||
uint8_t length=0;
|
uint8_t length=0;
|
||||||
|
|
||||||
switch(PAD_daraframe.cmd_id){
|
switch(PAD_daraframe.reg_addr){
|
||||||
case 0x01: // 配置系统参数
|
case 0x01: // 写入系统配置
|
||||||
sys_conf.Manager_sLim= PAD_daraframe.data[0];
|
if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
sys_conf.Tourist_sLim= PAD_daraframe.data[1];
|
|
||||||
sys_conf.Brake_DLimit= PAD_daraframe.data[2];
|
|
||||||
sys_conf.Speed_Cut_DLimit= PAD_daraframe.data[3];
|
|
||||||
sys_conf.Brake_DLimit_B= PAD_daraframe.data[4];
|
|
||||||
sys_conf.Speed_Cut_DLimit_B= PAD_daraframe.data[5];
|
|
||||||
write_cfg(&sys_conf);
|
write_cfg(&sys_conf);
|
||||||
case 0x02: // 读取系统配置
|
|
||||||
ret_data[length++]=sys_conf.Manager_sLim;
|
|
||||||
ret_data[length++]=sys_conf.Tourist_sLim;
|
|
||||||
ret_data[length++]=sys_conf.Brake_DLimit;
|
|
||||||
ret_data[length++]=sys_conf.Speed_Cut_DLimit;
|
|
||||||
ret_data[length++]=sys_conf.Brake_DLimit_B;
|
|
||||||
ret_data[length++]=sys_conf.Speed_Cut_DLimit_B;
|
|
||||||
|
|
||||||
app_PAD_Sendcmd(PAD_daraframe.cmd_id,0x01,ret_data,length);
|
|
||||||
break;
|
|
||||||
case 0x03: //0 退出模式//1 进入游客模式//2 进入管理员模式
|
|
||||||
sys_sta.Pmode = PAD_daraframe.data[0] & 0x03;
|
|
||||||
app_PAD_Sendcmd(PAD_daraframe.cmd_id,0x01,PAD_daraframe.data,PAD_daraframe.length);
|
|
||||||
break;
|
|
||||||
case 0x04: //0 关闭12V输出//1 开启12V输出
|
|
||||||
sys_sta.O_12V = PAD_daraframe.data[0];
|
|
||||||
app_PAD_Sendcmd(PAD_daraframe.cmd_id,0x01,PAD_daraframe.data,PAD_daraframe.length);
|
|
||||||
break;
|
|
||||||
// case 0x04:
|
|
||||||
|
|
||||||
// break;
|
|
||||||
|
|
||||||
default :
|
|
||||||
app_PAD_Sendcmd(PAD_daraframe.cmd_id,PAD_daraframe.reg_addr,PAD_daraframe.data,PAD_daraframe.length);
|
|
||||||
break;
|
|
||||||
/*
|
|
||||||
其他功能....
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case 0x02: // 管理员模式油门极限寄存器(Unit:%)
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
// ret_data[length++] =0;
|
||||||
|
ret_data[length++] =sys_conf.Manager_sLim;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_conf.Manager_sLim =PAD_daraframe.data[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x03: // 游客模式油门极限寄存器(Unit:%)
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
// ret_data[length++] =0;
|
||||||
|
ret_data[length++] =sys_conf.Tourist_sLim;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_conf.Tourist_sLim =PAD_daraframe.data[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x04: // 减速油门极限寄存器(Unit:%)(自动减速时油门极限)
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
// ret_data[length++] =0;
|
||||||
|
ret_data[length++] =sys_conf.Speed_Cut_sLim;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_conf.Speed_Cut_sLim =PAD_daraframe.data[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x05: // 刹车距离极限寄存器(前进)(Unit:mm)
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
ret_data[length++] =sys_conf.Brake_DLimit & 0x00FF;
|
||||||
|
ret_data[length++] =sys_conf.Brake_DLimit >> 8;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_conf.Brake_DLimit =(((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x06: // 减速距离极限寄存器(Unit:mm)
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
ret_data[length++] =sys_conf.Speed_Cut_DLimit & 0x00FF;
|
||||||
|
ret_data[length++] =sys_conf.Speed_Cut_DLimit >> 8;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_conf.Speed_Cut_DLimit =(((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x07: // 刹车距离极限寄存器(前进)(Unit:mm)
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
ret_data[length++] =sys_conf.Brake_DLimit_B & 0x00FF;
|
||||||
|
ret_data[length++] =sys_conf.Brake_DLimit_B >> 8;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_conf.Brake_DLimit_B =(((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x08: // 减速距离极限寄存器(Unit:mm)
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
ret_data[length++] =sys_conf.Speed_Cut_DLimit_B & 0x00FF;
|
||||||
|
ret_data[length++] =sys_conf.Speed_Cut_DLimit_B >> 8;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_conf.Speed_Cut_DLimit_B = (((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x09: //PAD模式寄存器
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
// ret_data[length++] =0;
|
||||||
|
ret_data[length++] =sys_sta.Pmode;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_sta.Pmode = PAD_daraframe.data[0] & 0x03;//0 退出模式//1 进入游客模式//2 进入管理员模式
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 0x0A: //系统模式寄存器
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
// ret_data[length++] =0;
|
||||||
|
ret_data[length++] =sys_sta.Smode;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
case 0x0B: //0 关闭12V输出//1 开启12V输出
|
||||||
|
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||||
|
// ret_data[length++] =0;
|
||||||
|
ret_data[length++] =sys_sta.O_12V;
|
||||||
|
// if(0 == --PAD_daraframe.length){
|
||||||
|
break;
|
||||||
|
// }
|
||||||
|
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||||
|
sys_sta.O_12V = PAD_daraframe.data[0] & 0x01;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// default :
|
||||||
|
// app_PAD_Sendcmd(PAD_daraframe.cmd_id,PAD_daraframe.reg_addr,PAD_daraframe.data,PAD_daraframe.length);
|
||||||
|
// break;
|
||||||
|
}
|
||||||
|
app_PAD_Sendcmd(PAD_daraframe.cmd_id ,PAD_daraframe.reg_addr ,ret_data ,length);
|
||||||
Rec_state =0;//数据处理完要清零,准备接收下一帧数据
|
Rec_state =0;//数据处理完要清零,准备接收下一帧数据
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +186,7 @@ void app_PAD_Receive(uint8_t data){
|
||||||
break;
|
break;
|
||||||
case 5://CRC8
|
case 5://CRC8
|
||||||
PAD_daraframe.crc = crc8_maxim(frame, 5 + PAD_daraframe.length);
|
PAD_daraframe.crc = crc8_maxim(frame, 5 + PAD_daraframe.length);
|
||||||
#if PAD_CRC8_EN
|
#if !PAD_CRC8_EN
|
||||||
PAD_daraframe.crc = data;
|
PAD_daraframe.crc = data;
|
||||||
#endif
|
#endif
|
||||||
//计算并验证crc8
|
//计算并验证crc8
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#define MAX_LEN 32
|
#define MAX_LEN 32
|
||||||
|
|
||||||
//0:失能数据校验
|
//0:失能数据校验
|
||||||
#define PAD_CRC8_EN 1
|
#define PAD_CRC8_EN 0
|
||||||
|
|
||||||
typedef struct PAD_daraframe
|
typedef struct PAD_daraframe
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue