如果消息是由交互式生成器块生成的,那么如何在CAPL中修改消息数据?

时间:2019-06-13 16:41:40

标签: can-bus capl canoe canalyzer

我正在使用CANalyzer。 我正在使用Interactive Generator模块传输CAN消息。我使用IG手动修改传输消息中的信号。 每次发送消息时,我需要自动计算校验和(消息中的最后一个字节)。校验和是根据消息中的所有先前数据字节计算得出的(消息始终为8个字节长)。 IG中没有选择这样做。

我需要: 1.使用IG手动设置信号。 2.根据前一个数据字节的值自动计算最后一个数据字节的值。

我试图用CAPL编写简单的代码,但没有成功。 我将CAPL程序节点放在“配置”窗口中的IG节点之后,并在CAPL脚本中写了消息事件:

on message FooMsg
{
  message FooMsg msg1; // FooMsg is name of message in database

  msg1 = this; // copy message from IG to temporary variable
  // this.byte(7) = 0x11; // not posibble, compiler warning
  msg1.byte(7) = 0x11;  // constant value just for test
  output(msg1); // send message
}

消息正在发送,但是不遵守IG中设置的Tx周期(消息发送速度尽可能快)。

我以为我捕获了IG生成的消息,对其进行修改并发送到CAN总线。

有人可以帮忙吗? 我是CAPL的初学者。

谢谢

1 个答案:

答案 0 :(得分:1)

最后,我按照VioletVynil的建议重新设计了整个内容。 我创建了面板,添加了系统变量并将其连接到面板上的控件,在CAPL中编写了一些代码来计算校验和和消息的定期传输,然后它运行!没有任何问题!是的,有效载荷上的附加CRC用于提高安全性(铁路应用)。我没有设计通信协议,只是得到了它。

谢谢!

一个问题。 CANanalyzer不支持环境变量,它仅支持系统变量。 CANoe支持它们两者。我什么时候需要envVars?什么时候应该使用CANoe而不是CANalyzer?为了模拟总线上的多个节点...?

相关问题