首页 文章

使用CAPL和dbc信号值发送消息

提问于
浏览
0

我正在使用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有点无用

也许有人有个主意 . 谢谢

2 回答

  • 0

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

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

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

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

    setSignalStartValues(message msg);
    
  • 0

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

    如果要自己实现(并完全控制)消息的发送,则函数output()非常有用 .

    而不是使用SetSignal(),也可以使用 $SignalName = value; 写入信号

    请参阅此支持说明

    https://kb.vector.com/entry/468/

    或直接

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

    您可能需要猜测并尝试一下 . 在客户提供的DBC文件中,我找到了本文档中未提及的属性值 .

相关问题