帅哥美女可以解惑一下吗


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什么时候启动的?