📄 klinecomm.c
字号:
G_uc8ResponseMessage[0]=0x82;
G_uc8ResponseMessage[3]=0x7b;
G_uc8ResponseMessage[4]=G_WriteDataPID;
G_un16ResponseMLength=6;
G_uc8ResponseMessage[5]=CheckSum();
bWriteDataByLIdFlag=0;
G_bSendReady=1;
}
if(bWriteMemoryByAFlag) //Write Memory By Address service
{
unsigned char page0;
unsigned char *addr;
unsigned int addrvalue;
page0=PPAGE;
addrvalue=(G_uc8MemoryAddressM*256)+G_uc8MemoryAddressL;//calculate the value of address
addr=(unsigned char*)addrvalue;
PPAGE=G_uc8MemoryAddressH;
for(i=0;i<G_uc8MemorySize;i++)
{
addr[i]=G_uc8Receivedata[G_SIDLocation+5+i];
}
PPAGE=page0;
G_uc8ResponseMessage[0]=0x84;
G_uc8ResponseMessage[3]=0x7d;
G_uc8ResponseMessage[4]=G_uc8MemoryAddressH;
G_uc8ResponseMessage[5]=G_uc8MemoryAddressM;
G_uc8ResponseMessage[6]=G_uc8MemoryAddressL;
G_un16ResponseMLength=8;
G_uc8ResponseMessage[7]=CheckSum();
bWriteMemoryByAFlag=0;
G_bSendReady=1;
}
if(bStartRoutineByAFlag) //Write Data By Local Identifier service
{
unsigned char page0;
unsigned char *addr;
unsigned int addrvalue;
unsigned long addrvalue0;
unsigned int memorysize;
page0=PPAGE;
addrvalue=(G_uc8MemoryAddressM*256)+G_uc8MemoryAddressL;//calculate the value of address
addr=(unsigned char*)addrvalue;
memorysize=G_uc8Receivedata[G_SIDLocation+4]*256+G_uc8Receivedata[G_SIDLocation+5];
addrvalue0=G_uc8MemoryAddressH*0x10000+addrvalue;
PPAGE=G_uc8MemoryAddressH;//
for(i=0;i<memorysize;i++)
{
MAPData[i]=addr[i];
}
PPAGE=page0;
switch(addrvalue0)
{
case 0x348040:
CalibrateTable=0x01;//bCalInjWidth_Table=1;
break;
case 0x348202:
CalibrateTable=0x02;//bCalStartInjWidth_Table=1;
break;
case 0x3483C4:
CalibrateTable=0x04;//bCalInjAdv_Table=1;
break;
// case 0x3483A6:
// CalibrateTable=0x08;//bCalibrateInjAdvAngle_MAP=1;
// break;
default:
break;
}/**/
G_uc8ResponseMessage[0]=0x84;
G_uc8ResponseMessage[3]=0x78;
G_uc8ResponseMessage[4]=G_uc8MemoryAddressH;
G_uc8ResponseMessage[5]=G_uc8MemoryAddressM;
G_uc8ResponseMessage[6]=G_uc8MemoryAddressL;
G_un16ResponseMLength=8;
G_uc8ResponseMessage[7]=CheckSum();
bStartRoutineByAFlag=0;
G_bSendReady=1;
}/**/
if(bNotSurpport) //Not support the request message
{
G_uc8ResponseMessage[0]=0x83;
G_uc8ResponseMessage[3]=0x7f;
G_uc8ResponseMessage[4]=G_ServiceID;
G_uc8ResponseMessage[5]=0x11;
G_un16ResponseMLength=7;
G_uc8ResponseMessage[6]=CheckSum();
bNotSurpport=0;
G_bSendReady=1;
}
if (bResponsePending) //Negative Response code=0x78
{ //requestCorrectlyReceived-ResponsePending
G_uc8ResponseMessage[0]=0x83;
G_uc8ResponseMessage[3]=0x7f;
G_uc8ResponseMessage[4]=G_ServiceID;
G_uc8ResponseMessage[5]=0x78;
G_un16ResponseMLength=7;
G_uc8ResponseMessage[6]=CheckSum();
}
}
/******************************************************************************
Function Name : KlineCommunication
Engineer :
Date : 03/28/2005
Arguments : none
Return : none
Notes : This function gives values to array of ReadDTCResponseMessage
according to protocol 14230-3.
******************************************************************************/
void KlineCommunication(void)
{
if(G_bSendEnble||bResponsePending)
{
if(G_un16SendNum<G_un16ResponseMLength)
{
KLineSend(G_uc8ResponseMessage[G_un16SendNum]);
G_un16SendNum++;
}
else
{
G_un16SendNum=0;
G_un16ResponseMLength=0;
G_bSendEnble=0;
bResponsePending=0;
SCI1CR2=0x2c;
}
}
}
void ConfigCalibratedPara(void)
{
switch(G_WriteDataPID)
{
//unsigned int 型数据的读取与修改
case 0x01:
KLineWData81_1=un16RecordValue;//un16TempWrite0 un16HighSwDelay
break;
case 0x02:
KLineWData81_2=un16RecordValue;//un16TempWrite1
break;
case 0x03:
KLineWData81_3=un16RecordValue;//un16TempWrite2
break;
case 0x04:
KLineWData81_4=un16RecordValue;//un16TempWrite3
break;
case 0x05:
KLineWData81_5=un16RecordValue;//un16TempWrite4
break;
case 0x06:
KLineWData81_6=un16RecordValue;//un16TempWrite5
break;
case 0x07:
KLineWData81_7=un16RecordValue;//un16TempWrite6
break;
case 0x08:
KLineWData81_8=un16RecordValue;//un16TempWrite7
break;
//int 型数据的修改
case 9:
KLineWData82_1=un16RecordValue;//n16TempWrite0
break;
case 10:
KLineWData82_2=un16RecordValue;//n16TempWrite1
break;
case 11:
KLineWData82_3=un16RecordValue;//n16TempWrite2
break;
case 12:
KLineWData82_4=un16RecordValue;//n16TempWrite3
break;
case 13:
KLineWData82_5=un16RecordValue;//n16TempWrite0
break;
case 14:
KLineWData82_6=un16RecordValue;//n16TempWrite1
break;
case 15:
KLineWData82_7=un16RecordValue;//n16TempWrite2
break;
case 16:
KLineWData82_8=un16RecordValue;//n16TempWrite3
break;
//unsigned char 型数据修改
case 17:
KLineWData83_1=(unsigned char)un16RecordValue;//un8TempWrite0
break;
case 18:
KLineWData83_2=(unsigned char)un16RecordValue;//un8TempWrite1
break;
case 19:
KLineWData83_3=(unsigned char)un16RecordValue;//un8TempWrite2
break;
case 20:
KLineWData83_4=(unsigned char)un16RecordValue;//un8TempWrite3
break;
case 21:
KLineWData83_5=(unsigned char)un16RecordValue;//un8TempWrite4
break;
case 22:
KLineWData83_6=(unsigned char)un16RecordValue;//un8TempWrite5
break;
case 23:
KLineWData83_7=(unsigned char)un16RecordValue;//un8TempWrite6
break;
case 24:
KLineWData83_8=(unsigned char)un16RecordValue;//un8TempWrite7
break;
//char 型数据的修改
case 25:
KLineWData84_1=un16RecordValue;//n16TempWrite0
break;
case 26:
KLineWData84_2=un16RecordValue;//n16TempWrite1
break;
case 27:
KLineWData84_3=un16RecordValue;//n16TempWrite2
break;
case 28:
KLineWData84_4=un16RecordValue;//n16TempWrite3
break;
case 29:
KLineWData84_5=un16RecordValue;//n16TempWrite0
break;
case 30:
KLineWData84_6=un16RecordValue;//n16TempWrite1
break;
case 31:
KLineWData84_7=un16RecordValue;//n16TempWrite2
break;
case 32:
KLineWData84_8=un16RecordValue;//n16TempWrite3
break;
//float 型数据的修改
case 33:
KLineWData85_1=floRecordValue;//floatTempWrite0
break;
case 34:
KLineWData85_2=floRecordValue;//floatTempWrite1
break;
case 35:
KLineWData85_3=floRecordValue;//floatTempWrite2
break;
case 36:
KLineWData85_4=floRecordValue;//floatTempWrite3
break;/**/
case 37:
KLineWData85_5=floRecordValue;//floatTempWrite4
break;
case 38:
KLineWData85_6=floRecordValue;//floatTempWrite5
break;
case 39:
KLineWData85_7=floRecordValue;//floatTempWrite6
break;
case 40:
KLineWData85_8=floRecordValue;//floatTempWrite7
break;/**/
default:
bSubFunNotSup=1;
G_uc8ResponseMessage[0]=0x83;
G_uc8ResponseMessage[3]=0x7f;
G_uc8ResponseMessage[4]=0x7b;
G_uc8ResponseMessage[5]=0x12;
G_un16ResponseMLength=7;
G_uc8ResponseMessage[6]=CheckSum();
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -