Сигналы CAN сообщения, CAPL

Я пытаюсь сохранить данные сигнала в каждом сообщении CAN в отдельных переменных. Например, У меня есть сообщение CAN 'msg1' dlc =4, с сигналами {8, 5, 7, 21} в CAPL CANalyzer, я хотел бы сохранить их в переменных, таких как: int var1 = msg1.byte(0); но я продолжаю получать ноль (0) как окончательное значение переменной после операции.

Буду признателен за любую оказанную помощь. Спасибо

1 ответ

Решение

Если вы этого еще не сделали, внедрите событие on message, используя ключевое слово this:

on message msg1 {
  var1 = this.byte(0);
  ...
}

Событие всегда будет запускаться, когда CANalyzer получит сообщение, указанное в событии on message. Таким образом, вы также можете убедиться, что значение, хранящееся в var1, обновлено. Вы также можете использовать более общий подход с использованием массивов.

on message msg1 {
  int i;
  int var[msg1.dlc];
  for (i = 0; i < msg1.dlc; i++) {
    var[i] = this.byte(i);
  }
}
Другие вопросы по тегам