请求和响应
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
前言
一、请求和响应
请求和响应是诊断的基本要素,在ECAPL中发送诊断请求并得到诊断响应则是测试的最基本步骤。
1.定义请求并发送
此处声明了一个diagRequest变量,通过long diagSendRequest ( diagRequest obj )函数将其发送出去。IPC.ExtendedDiagnosticSession_Start是开始执行CDD文件中定义好的ExtendedDiagnosticSession。当用户输人“IPC."之后,CANoe会自动过滤出IPC支持的诊断服务供用户选择。此处将切换到ExtendedDiagnosticSession作为诊断请求。
2.获取响应数据
当诊断请求发送后,CANoe已经被动接收了诊断响应,如果有响应的话,用户只需要去获取响应的数据。此处使用long diagGetLastResponseCode ( diagRequest req)来判断响应的类型,结构如下。
需要注意的是,诊断命令的发送和接收都是需要时间的,如果诊断请求发送后立即验证响应的类型,很可能此时响应还未完成,由下表看出,TFS提供了两个测试函数来设定发送和响应的等待时间。
3.实例-安全访问
SeedRequest的发送与基本的诊断请求发送一致,也使用diagSendRequest函数。再使用diagCetRespPrimitiveByte函数将安全种子从诊断响应中取出。该函数返回响应中bytePos位置的数据,循环结构如下。
(1)请求安全访问种子(Seed)
(2)通过Seed& Key dl计算出密钥(Key) .
CANoc提供diagGencrateKeyFromSeed函数来调用d计算出密钥,当返回值为0时,密钥计算成功。具体实现如下。
(3)发送密钥
读者可以通过diagSetParameterRawr数将密切赋值给诊断请求,再将KeySend请求发送出去,并期待得到肯定响应。