我正在使用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 回答
我使用的是CANalyzer 8.2版,我没有选择使用SetSignal(信号,值)功能 . 通过访问消息选择器来设置信号值似乎是一种合理的方法 . 但是你使用了函数outport!您需要使用输出函数来传输消息 .
对于此方法,必须配置数据库,以便消息msg包含所有必需的信号(signal1) .
如果要将所有信号值设置为数据库中配置的起始值,请使用以下函数:
您可以设置交互层,以处理分配给节点的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文件中,我找到了本文档中未提及的属性值 .