我们在ADAS应用开发测试过程中,会遇到如下问题:
- 项目1使用了DBC1, 项目2使用了DBC2,但是想用项目1的工程跑到项目2的车上去,所以需要两个项目的DBC数据互转。
- 当工程跑在车上时,但是想修改车辆上某些输入或者输出信息,来测试工程的响应,这个时候需要一个通道接收过来,修改之后,另一个通道发出去。
以上的问题是比较常见的问题,这就需要写CAPL脚本来实现互转,以下是通道1跟通道2的数据修改互转。
on message CAN2.*
{
message CAN1.* msg;
if (this.dir == tx) return;
if (this.id == 0xXXXX)
{
// 可以增加一个函数定义该条消息,并修改内部的信号然后发出去
}
else
{
msg = this;
output(msg);
}
}
on message CAN1.*
{
message CAN2.* msg;
if (this.dir == tx) return;
if (this.id == 0xXXXX)
{
// 可以增加一个函数定义该条消息,并修改内部的信号然后发出去
}
else
{
msg = this;
output(msg);
}
}
最后有一点需要注意:
如果在同一个项目中(问题2),两个通道需要添加的DBC,我们有时候偷懒,把同一个DBC文件同时设置到两个通道中,这样会导致数据无法发出,所以即便是两个通道时候相同的DBC,最好复制一份出来,两个通道各自添加自己单独的DBC文件。
有用的朋友欢迎收藏点赞!