Vector - CAPL - CANoe DBC消息相关自动化_01

目录

getFirstCANdbFilename -- 获取数据库的文件名

代码示例

getFirstCANdbName -- 获取数据库的名称

代码示例

getSignalName -- 获取报文的信号名称

getMessageAttrInt -- 获取信号属性值

代码示例


getFirstCANdbFilename -- 获取数据库的文件名

功能:找出第一个被分配的数据库的文件名。

buffer:写入数据库文件名的缓冲区。

size:以字节为单位的缓冲区大小。

返回值:

        != 0:成功获取dbc名称

        0:获取dbc名称失败

代码示例

on start
{
    char buffer[256];
    dword pos;

    pos = GetFirstCANdbFilename( buffer, elcount( buffer));
    //查找第一个数据库的文件名。
    //如果找到数据库,“pos”包含值 1。
    //如果没有找到 "pos" 包含 0。

    while ( 0 != pos)
    {
        write( "CANdb: %s", buffer);
        pos = GetNextCANdbFilename( pos, buffer, elcount( buffer));
        //查找其他数据库的文件名。
        //如果找到其他数据库
        //"pos" 包含值 2、3 等
        //如果没有找到更多的数据库
        //"pos" 包含 0 并退出循环
    }
}

getFirstCANdbName -- 获取数据库的名称

功能:找出第一个分配的数据库的名称。

buffer:写入数据库文件的缓冲区。

size:以字节为单位的缓冲区大小。

返回值:

        != 0:成功获取dbc名称

         0:获取dbc名称失败

代码示例

on start
{
  char buffer[256];
  dword pos;

  pos = GetFirstCANdbName( buffer, elcount( buffer));
  //查找第一个数据库的名称。
  //如果找到数据库,“pos”包含值1
  //如果没有找到 "pos" 包含 0

  while ( 0 != pos)
  {
    write( "CANdb: %s", buffer);
    pos = GetNextCANdbName( pos, buffer, elcount( buffer));
    //查找其他数据库的名称。
    //如果找到其他数据库
    //"pos" 包含值 2、3 等
    //如果没有找到更多的数据库
    //"pos" 包含 0 并退出循环
  }
}

getSignalName -- 获取报文的信号名称

功能:返回 CAN 网络 CAN 消息负载中索引位置(起始位)的信号名称。

返回 CAN 网络 PDU 索引位置(起始位)的信号名称。 

caplCanMessage:CAN网络中的CAN报文

caplAutosarPDU:Autosar中的PDU报文

startBit:信号在报文中的起始位置

返回值:      

        返回 CAN 消息中给定起始索引处的信号名称。 起始索引在 DBC 编辑器中定义

        返回 PDU 内给定起始索引处的信号名称。 起始索引是用 Autosar Explorer 定义的。

getMessageAttrInt -- 获取信号属性值

功能:从数据库中获取消息属性的值;必须在数据库中定义具有参数中指定的名称且类型为 Integer 的用户定义属性。 如果没有定义这样的属性,则该函数返回 0。如果没有为数据库中的消息分配属性值,则返回属性定义的默认值。

说明:每次调用时,此函数都会再次在数据库中查找消息属性的值。 如果消息在编写 CAPL 程序时已知,则应通过其选择器语法直接找到该属性(<消息变量>.<属性名称>,例如 absData.msgCycleTime)。

canMessage:CAN报文

attributeName:目标名称

返回值:来自数据库的属性值(或默认值)

代码示例

此示例在收到消息时在 Write Window 中输出消息属性 GenMsgCycleTime 的值。

属性名必须按照数据库中的定义来写。 您可以在数据库的属性窗口中找到属性名称。

on message *
{
  long cycleTimeValue1;
  long cycleTimeValue2;
  cycleTimeValue1 = getMessageAttrInt(this, "GenMsgCycleTime");
  write("CycleTime of message id %x = %d", this.id, cycleTimeValue1);
  message EngineData gMsgEngineData;
  cycleTimeValue2 = getMessageAttrInt(gMsgEngineData, "GenMsgCycleTime");
  write("CycleTime of message id %x = %d", this.id, cycleTimeValue2);
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载网络测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值