0

我想访问 CAPL 中的 IG 块,例如激活/停用消息发送,设置信号值。但我没有找到这种capl函数。

4

2 回答 2

1

您需要在 CAPL 中声明您是自己的消息,然后您应该使用函数“输出”在 CAN 上发送它。下面的示例以 100 毫秒周期发送 ID 为 0x100 的消息。

enter code here
variables
{
  msTimer timer200ms;
  msTimer timer100ms;
  message 0x100 msg = {
    DLC = 8, 
    byte(0) = 0x00, byte(1) = 0x00, byte(2) = 0x00, byte(3) = 0x00,
    byte(4) = 0x00, byte(5) = 0x00, byte(6) = 0x00, byte(7) = 0x00 
 };
  byte myByte[8];
}

on timer timer200ms{
  int i=0, j=0;

  if(i<7){
    if(j<256){
      myByte[i] = j;
      write("frame %d have been change for %d", i, j);
      j++;
      if(j==255){
        i++;
        j=0;
      }
    }
  }
  else{
   cancelTimer(timer200ms); 
  }
}

on timer timer100ms{
    msg.byte(0) = myByte[0];
    msg.byte(1) = myByte[1];
    msg.byte(2) = myByte[2];
    msg.byte(3) = myByte[3];
    msg.byte(4) = myByte[4];
    msg.byte(5) = myByte[5];
    msg.byte(6) = myByte[6];
    msg.byte(7) = myByte[7];
    output(msg);
}

on start{
  setTimerCyclic(timer100ms, 100);
  setTimerCyclic(timer200ms, 100);
}
于 2017-06-07T12:28:33.200 回答
0

您必须在按键或连接到面板上的功能上创建一些功能,IG 只是一种更简单的发送消息的方式,但您不能将 capl 与 IG 连接,因为它们是不同的节点。

于 2017-03-08T11:48:31.590 回答