includes
{
}
variables
{
message 0x77e msg;
_align(1) struct DidTester
{
byte MsgCode[2];
byte MsgLth;
};
struct DidTester tDidCfg[14]={
{ {0xF1, 0x87}, 13},
{ {0xF1, 0x8A}, 5},
{ {0xF1, 0xE6}, 1},
{ {0xF1, 0xE7}, 1},
{ {0xF0, 0xFF}, 48},
{ {0xF1, 0xA2}, 19},
{ {0xF1, 0x90}, 17},
{ {0xF1, 0xA1}, 17},
{ {0xF1, 0xB0}, 31},
{ {0xF1, 0xB2}, 9},
{ {0xF1, 0x89}, 15},
{ {0xF1, 0xC0}, 15},
{ {0xF1, 0xC1}, 15},
{ {0xF1, 0xC5}, 20}
};
msTimer DidTestTimer1;
byte DidTestCurIdx = 0;
byte DidTestIdxMax = 0;//elCount(tDidCfg);
byte DidCurExpectResult = 0;
byte DidSendCnt = 0;
message 0x77e DiagReq = {
dlc = 8
};
byte DidSwitchFlag = 0;
byte DidCycleDidCheckStep = 0;
}
on start
{
write("on start!!");
DidTestIdxMax = elCount(tDidCfg);
}
on timer DidTestTimer1
{
//message*TestMsg;
byte BufTemp[4];
msg.dlc = 8;
msg.id = 0x77e;
DidCurExpectResult = 1;
output(msg);
}
on key 's'
{
write("on key 's'");
DidTestCurIdx = 0;
//setTimer(DidTestTimer1,1);
SendDiagReqCheckDidState();
//DidSendCnt = elCount(tDidCfg);
}
on message 0x7be
{
message 0x77e msg1;
if((this.byte(0)&0xf0) == 0x10)
{
msg1.dlc = 8;
msg1.byte(0) = 0x30;
msg1.byte(1) = 0x00;
msg1.byte(2) = 0x00;
msg1.byte(3) = 0x00;
msg1.byte(4) = 0x00;
msg1.byte(5) = 0x00;
msg1.byte(6) = 0x00;
msg1.byte(7) = 0x00;
output(msg1);
if (tDidCfg[DidTestCurIdx].MsgLth <= 4)//did数据长度=单帧数据长度- (sid+did)
{
if (
(this.byte(1) == 0x62)
&&(this.byte(2) == tDidCfg[DidTestCurIdx].MsgCode[0])
&&(this.byte(3) == tDidCfg[DidTestCurIdx].MsgCode[1])
)
{
if (this.byte(0) == (tDidCfg[DidTestCurIdx].MsgLth + 3))
{
write("curr did test step 02%x02%x [pass]!!!",
tDidCfg[DidTestCurIdx].MSgCode[0],
tDidCfg[DidTestCurIdx].MsgCode[1]);
}
else
{
write("curr did test step 02%x02%x [fail]!!!",
tDidCfg[DidTestCurIdx].MSgCode[0],
tDidCfg[DidTestCurIdx].MsgCode[1]);
}
}
else
{
write("curr did test step 02%x02%x [****fail****]!!!,expect result = %d",
tDidCfg[DidTestCurIdx].MsgCode[0],
tDidCfg[DidTestCurIdx].MsgCode[1],
DidCurExpectResult);
}
}
else // 长度大于4
{
if (
(this.byte(1) == 0x62)
&&(this.byte(2) == tDidCfg[DidTestCurIdx].MsgCode[0])
&&(this.byte(3) == tDidCfg[DidTestCurIdx].MsgCode[1])
)
{
if ((tDidCfg[DidTestCurIdx].MsgLth + 3 ) > 7)
{
write("curr did test step 02%x02%x [pass]!!!",
tDidCfg[DidTestCurIdx].MSgCode[0],
tDidCfg[DidTestCurIdx].MsgCode[1]);
}
else
{
write("curr did test step 02%x02%x [fail]!!!",
tDidCfg[DidTestCurIdx].MSgCode[0],
tDidCfg[DidTestCurIdx].MsgCode[1]);
}
}
else
{
}
}
}
}
void SendDiagReq(byte Buff[], byte Length)
{
byte DidIdx = 0;
DiagReq.byte(0) = 0x00 + Length;
for (DidIdx=0;DidIdx < Length;DidIdx ++)
{
DiagReq.byte(1+DidIdx) = Buff[DidIdx];
}
output(DiagReq);
}
void SendDiagReqCheckDidState()
{
byte BufTemp[8];
BufTemp[0] = 0x22;
BufTemp[1] = tDidCfg[DidTestCurIdx].MsgCode[0];
BufTemp[2] = tDidCfg[DidTestCurIdx].MsgCode[1];
//BufTemp[3] = tDidCfg[DidTestCurIdx].MsgCode[1];
SendDiagReq(BufTemp, 3);
}
这个脚本为什么循环不了did只发送一个did就停了,帅哥美女帮帮忙
你的DidTestTimer1什么时候启动的?