在实际项目的诊断测试中,我们需要通过安全访问(Security Access)来实现对ECU的解锁,接下来就要通过Vector的官方函数和CAPL实例来实现自动化测试。
void cal_seedKey(byte gSecurityLevel)
{
diagrequest *DiagSeedKey ;
long i, resSize,ret;
byte gSeedArray[255];
int gSeedArraySize ;
char gVariant[200] = "Variant1";
char gOption[200] = "option";
byte gKeyArray[255];
int gMaxKeyArraySize = 255;
dword gActualSize = 0;
//发送 0x27 xx
diagResize(DiagSeedKey,2);
DiagSetPrimitiveByte(DiagSeedKey,0,0x27);
DiagSetPrimitiveByte(DiagSeedKey,1,gSecurityLevel);
if(Send_DiagRequest_diag1(DiagSeedKey) == 1)//上一步骤是pass
{
resSize = DiagGetRespPrimitiveSize(DiagSeedKey);
gSeedArraySize = resSize - 2 ; //去除诊断头部
for(i = 0; i < gSeedArraySize; i ++)
{
gSeedArray[i] = DiagGetRespPrimitiveByte(DiagSeedKey, i+2);
write("gSeedArray[%d]:0x%x",i,gSeedArray[i]);
}
//计算 Key
ret = DiagGenerateKeyFromSeed