[CAPL]如何将CAN通道的一个PDU的信号路由到CANoe中的另一个CAN通道?

问题描述

我是 CAPL 编程的新手。 如何将属于一个 CAN 通道的一个 PDU 的信号路由到另一个 CAN 通道。 谁能建议我怎么做?

解决方法

如果我理解得很好,您正在尝试做一个网关模块,在该模块中您将从一个频道接收消息,并且您必须将接收到的消息发送到另一个频道。 请试试这段代码,可能对你有帮助。

variables
{
   message 0x123 Chanl1 = 
   {
      ID = 0x111;
      DLC = 8,CAN = 1,};
   message 0x123 Chanl2 = 
   {
      ID = 0x111;
      DLC = 8,CAN = 2;
   };
} 
    
on message *
{
   if((this.ID == 0x111) && (this.CAN == 1)) // 0x111 is your channel1 id
   {
      chanl2.byte(0) = this.byte(0);
      chanl2.byte(1) = this.byte(1);
      chanl2.byte(7) = this.byte(7);
      chanl2.id = 0x111;
      output(chanl2);               
   }
}
,

声明系统变量:

  • isPDUGoingToBeSent - 值更改将触发事件 on sysvar sysvar::isPDUGoingToBeSent

  • some_signal_sysvar

将接收到的信号值写入系统变量,并触发另一个事件。

on PDU ReceivedPDU
{
    @sysvar::some_signal_sysvar = $ReceivedPDU::signal_name;
    @sysvar::isPDUGoingToBeSent = 1;
}

在触发事件时检查是否已设置 sysvar 并发送 PDU。

on sysvar sysvar::isPDUGoingToBeSent
{
    if(@this)
    {
        pdu PDU_FROM_DB mirrored_pdu;
        mirrored_pdu.some_signal = @sysvar::some_signal_sysvar;
        triggerPDU(mirrored_pdu);
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...