📄 error_dispose.h
字号:
//自检历程
void Self_Check(){}
//判断是否存在故障,如果有故障,生成故障码
uchar Check_Error()
{
return 255;//没有任何故障
}
//故障处理
void Error_Process(uchar error)
{
if (error == 255 )
return;
switch(error)
{
case 1:
case 2:
case 30:
case 31:
case 32:
break;
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
default:;
}
}
void Error_COM()
{
Push_Queue(17,241);
//CAN发送
while((m_ComEnd==0)&&(SendQueNum>0))
{
if(SendOver == 1)
{
Make_SendFrame(SendQue[SendQueNum-1]);
SendOver = 0;
SendQueNum--;
CAN0TIER = 0x07;//发送中断使能,启动一次发送
}
}//CAN发送结束
}
//检测诊断仪
void Check_Diagnoser()
{
static ulong Diagnoser_CNT_last = 0;
static uchar CNT_i = 0;
uchar i = 0;
if(PDU_CNT[17] == Diagnoser_CNT_last)//没有收到诊断仪的报文
return;
//如果收到
Diagnoser_CNT_last = PDU_CNT[17];
switch ((uchar)PDU[17].VerData[1])
{
case 0x10://请求诊断操作
if(1)//判断车辆状态,看是否允许和诊断仪通讯
{
ERR_COM = 1;
PDU[17].VerData[0] = 0x01;//PCI
PDU[17].VerData[1] = 0x50;
}
else
{
ERR_COM = 0;
PDU[17].VerData[0] = 0x02;//PCI
PDU[17].VerData[1] = 0x7F;
PDU[17].VerData[2] = 0xAA;//Res.Cod
}
Error_COM();
break;
case 0x13://请求故障码信息
if(ERR_COM)
{
if(1)//故障码少于3个,使用单帧传输
{
PDU[17].VerData[0] = 0x07;//PCI
PDU[17].VerData[1] = 0x53;
PDU[17].VerData[2] = ERR_CODE[0]>>8;
PDU[17].VerData[3] = ERR_CODE[0];
PDU[17].VerData[4] = ERR_CODE[1]>>8;
PDU[17].VerData[5] = ERR_CODE[1];
PDU[17].VerData[6] = ERR_CODE[2]>>8;
PDU[17].VerData[7] = ERR_CODE[2];
}
else//故障码多于3个,使用多帧传输
{
}
Error_COM();
}
break;
case 0x14://清除诊断信息
if(ERR_COM)
{
if(1)//判断是否允许清除诊断信息
{
for(i=0;i<10;i++)//清除故障码
ERR_CODE[i] = 0;
PDU[17].VerData[0] = 0x01;//PCI
PDU[17].VerData[1] = 0x54;
}
else
{
PDU[17].VerData[0] = 0x02;//PCI
PDU[17].VerData[1] = 0x7F;
PDU[17].VerData[2] = 0xAA;//Res.Cod
}
Error_COM();
}
break;
default:
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -