诊断作为CAN&CANFD总线测试中最大也是很重要的一块内容,虽然测试过程比较简单,但是作为诊断接收函数,我想大家在测试中都会遇到多种多样的自研函数,经过多年的工作,我也是一直希望写出一个能够适配我所能想到的所有情况的诊断应答接收,以下函数是我最近对于诊断接收函数个人理解的一个总结吧,基本满足肯定应答、否定应答、服务器繁忙(NRC 0x78)、多种应答检查例如(7F xx xx||62 xx xx *)等应答格式的数据检测。
诊断应答总函数
export void Check_Recv_Exp_Ether_Resp(char expBuff[])
{
dword RecvFIag;
char actbuff[512], tempBuff[512];
RecvFlag = Get_Phy_Resp_Data();
sysGetVariableString(sysvar::common::diag_recv_buff, actbuff, elCount(actbuff));
switch (RecvFlag)
{
case -2:
teststepFail("check", "超时 5500ms 没有接收到诊断连续帧报文");
break;
case -1:
teststepFai1("Check", "最大超时 120008ms 没有接收到诊断所有报文");
break;
case 0:
teststepFail("check", "超时 1000ms 没有接收