CANoe 中新建Node發checksum,并用CAPL 发档位信息
建立一个Node
可以从DBC选一个msg :
写一个TCU.can :
/*@!Encoding:1252*/
/*@!Encoding:1252*/
includes
{
}
variables
{
const byte FOUR_BITS_MAX=15;
byte process_counter[14] = {0, 0, 0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0};
byte checksum_sb[14] = {56, 56, 56, 56, 56, 56, 56, 60, 60, 60, 60, 60, 28, 32};
}
/*******Msg_Timeout DTC Start*********/
/*
on sysvar sysvar::My::block_msg_268
{
if(@this==1)
{
ILFaultInjectionDisableMsg(TCU_T_APA268);
}
else
{
ILFaultInjectionEnableMsg(TCU_T_APA268);
}
}
*/
/*******Msg_Timeout DTC End*********/
dword applILTxPending (long aId, dword aDlc, byte data[])
{
switch (aId)
{
case 0x268:
UpdateProcessCounter(2);
if(1 == getValue(Env_rollingcounter_268))
{
/*error*/
}
else
{
data[6]=process_counter[2] & 0x0F;
}
//data[6]=process_counter[2] & 0x0F;
if(1 == getValue(Env_checksum_268))
{
/*error*/
}
else
{
data [7] = ClaculateChecksum_onebyte(0x268, 8, data);
}
//data [7] = ClaculateChecksum_onebyte(0x268, 8, data);
if(getvalue(Env_DlcError_268)==1)
ILFaultInjectionSetMsgDlc(TCU_T_APA268, 0);
else
ILFaultInjectionResetMsgDlc(TCU_T_APA268);
break;
def