CAPL:按键后发送连续消息

时间:2019-07-24 05:05:58

标签: can-bus capl

我试图在按键后连续发送消息,并在设置的时间后重置消息。

includes
{

}

variables
{
  int i;
  int j;
}

On key 'a'
{
  j = 1;

}

on start
{
  if(j == 1 && i <= 300)
  {
    message MyMessage msg;
    msg.signal1 = 1;
    msg.signal2 = 600;
    output(msg);
    i++;
  }
  if(i>300)
  {
    message MyMessage msg;
    msg.signal1 = 0;
    msg.signal2 = 0;
    output(msg);
    j = 0;
  }
}

因此,在按“ A”键时,它需要继续发送消息3秒钟,但3秒钟后结束。它需要将我的消息重置为0。

我认为“开始时”被称为每个循环周期。但是看来我错了。

1 个答案:

答案 0 :(得分:0)

单击CANoe中的黄色闪烁符号后,将仅调用

On start。 您可以使用一个计时器,该计时器可在需要的每10 / ms中定期调用一次。在On timer函数中,您可以满足自己的逻辑。

您可以使用以下CAPL脚本作为参考,并根据需要对其进行修改。

includes
{
}

variables
{  int i;
  int j;
  mstimer timer1;
}

On key 'a'
{
  j = 1;

}

On timer timer1
{
  if(j >= 1 && i <= 300)
  {
    message MyMessage msg;
    msg.signal1 = 1;
    msg.signal2 = 600;
    output(msg);
    i++;
  }
  if(i>300)
  {
    message MyMessage msg;
    msg.signal1 = 0;
    msg.signal2 = 0;
    output(msg);
    j = 0;
  }
  settimer(timer1,10);
}

on start
{
    j = 0;
    i = 0;
    settimer(timer1,10);
}