【问题标题】:Sending message with CAPL and dbc signal values使用 CAPL 和 dbc 信号值发送消息
【发布时间】:2017-10-01 08:44:26
【问题描述】:

我正在使用 CAPL 为一些小型测试模拟测试环境,但在发送消息或更具体的值设置时遇到问题。

我可以使用 $SignalName 读取信号值,也可以设置类似的信号值。

如果我使用此代码发送消息,则消息数据始终为 0:

on key 't'
{
  message MessageName msg;
  setSignal(SignalName,i);
  write("Value: %d",i);
  outport(msg);
}

Witch 有点意思,因为我认为消息对象旨在用于发送您可以通过 msg.byte() 访问的字节

我知道我可以通过 msg.SignalName 在消息中设置信号,但这似乎不是正确的方法。我认为应该有一种发送消息的方法,并且消息中包含的所有信号都设置为 SetSignal() 函数设置的值。否则 SetSignal Funktion 有点没用

也许有人有想法。 谢谢

【问题讨论】:

    标签: can-bus capl canoe


    【解决方案1】:

    我使用的是 CANalyzer 8.2 版,我没有使用 SetSignal(signal, value) 函数的选项。通过访问消息选择器来设置信号值似乎是一种合理的方法。但是您使用了功能输出端口!你需要使用输出函数来传递消息。

    on key 't' {
      message MessageName msg;
      msg.signal1 = value1;
      output(msg);
    }
    

    对于此方法,必须配置数据库,以便消息 msg 包含所有必要的信号 (signal1)。

    如果要将所有信号值设置为数据库中配置的起始值,请使用以下函数:

    setSignalStartValues(message msg);
    

    【讨论】:

      【解决方案2】:

      您可以设置一个交互层来处理分配给节点的 CAN 数据库(DBC 文件)中定义的消息。交互层将需要数据库中的一些属性来定义必须如何发送消息。如果尚未出现,您可能必须添加这些属性。如果 Tx 消息未按预期发送,请检查属性。

      如果您想自己实现(并完全控制)消息的发送,函数 output() 很有用。

      除了使用 SetSignal() 之外,还可以使用 $SignalName = value; 写入信号

      请参阅此支持说明:

      https://kb.vector.com/upload_551/file/SN-IND-1-011_InteractionLayer(1).pdf

      您可能需要进行一些猜测和实验。在客户提供的 DBC 文件中,我发现了本文档中未提及的属性值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-04
        • 2018-06-27
        • 2018-11-23
        • 2021-09-20
        • 1970-01-01
        • 1970-01-01
        • 2022-06-19
        • 1970-01-01
        相关资源
        最近更新 更多