CAPL如何实现27服务解锁

在文章《CANoe-如何实现27服务解锁》里,我们介绍了诊断控制台中如何实现27解锁,如果我想在CANoe中使用CAPL程序解锁的话,又要如何实现呢?

CAPL脚本也是通过模拟手动操作来实现27解锁,所以步骤为:

  • 发送10 03
  • 发送27 01
  • 接收67 01,获取seed值
  • 根据seed值和算法,计算出key值
  • 发送27 02 + key值
  • 接收67 02,说明解锁成功

所以问题的关键就在:CAPL如何使用算法计算key值!

在CAPL的诊断函数集中,有一个函数可以根据seed计算出key:

CAPL如何实现27服务解锁_第1张图片

具体语法:

long diagGenerateKeyFromSeed ( byte seedArray[], dword seedArraySize, dword securityLevel, char variant[], char ipOption[], byte keyArray[], dword maxKeyArraySize, dword& keyActualSizeOut); // form 1

long DiagGenerateKeyFromSeed(char ecuQualifier[], byte seedArray[] , dword seedArraySize, dword securityLevel, char variant[], char option[] , byte keyArray[], dword maxKeyArraySize, dword& keyActualSizeOut

你可能感兴趣的:(【付费专栏】CAPL编程语言,CANoe,CAPL,诊断27服务)