Vector - CAPL - CAN消息自动化设置

目录

canGetDataLength -- 获取CAN消息有效负载长度

代码示例

canOutputErrorFrame -- 模拟发送错误帧消息

代码示例

isStdId  & isExtId -- 判断报文是标准帧&扩展帧

代码示例

mkExtId -- 将标准帧转换为扩展帧

代码示例

valOfId -- CAN消息的长值标识符

代码示例

canConfigureBusOff -- 总线设置为Busoff

代码示例


canGetDataLength -- 获取CAN消息有效负载长度

功能: 返回 can 消息的有效负载长度。

msg:CAN报文消息,通过变量message变量定义的CAN消息,也可以是this。

返回值:0 - 64(CAN&CANFD的长度范围)

代码示例

on message CAN1.*
{
  int message_len;
  if(this.id == 0x100)
  {
    message_len = canGetDataLength(this);
    write("Message 0x100 length is %d", message_len);
  }
}

canOutputErrorFrame -- 模拟发送错误帧消息

功能:向 CAN 总线发送错误帧;显性位的数量和尾部隐性位的数量作为参数给出。

errorFrame:errorFrame 类型的变量。

dominant:显性位的数量

recessive:隐性位的数量

返回值:

        1:发送成功

        0:发送失败(例如 驱动不支持)

代码示例

errorframe error1;
CAN2.errorFrame error2;
//在 CAN1 上输出具有 12 个显性位的错误帧
canOutputErrorFrame(error1, 12, 0); 
//在 CAN1 上输出具有 12 个显性位的错误帧
canOutputErrorFrame(error2, 6, 0);

isStdId  & isExtId -- 判断报文是标准帧&扩展帧

功能:检查标准帧&扩展帧的参数;检查扩展标识符(29 位)或标准标识符(11 位)的参数。

message:CAN消息类型的变量

id:CAN消息的 ID 部分

返回值:

        1:isStdId 如果是标准帧则返回1;isExtId 如果是扩展帧则返回1

        0:isStdId 如果不是标准帧则返回0;isExtId 如果不是扩展帧则返回1

代码示例

if(isExtId(this))
    write("extended identifier");
else
    write("standard identifier");
//代码等同于
if(isStdId(m100.id))
    write("standard identifier");
else
    write("extended identifier");

mkExtId -- 将标准帧转换为扩展帧

功能:将标准帧报文ID修改为扩展帧报文

id:CAN消息的 ID 部分

返回值:扩展标识符

代码示例

msg.id = mkExtId(this.id);
//msg.id变为扩展帧报文

valOfId -- CAN消息的长值标识符

功能:返回与其类型无关的消息标识符的值,作为长值的标识符

message:CAN消息类型的变量

id:CAN消息的 ID 部分

返回值:作为长值的标识符。

代码示例

on message *
{
    long x;
    x = valOfId(this);
    write("Received Identifier: %d",x);
    output(this);
}

canConfigureBusOff -- 总线设置为Busoff

功能:将总线状态设置为 BussOff,使用消息的定义 ID 将总线状态设置为 BusOff。

注意:此功能至少需要 Vector 驱动程序 9.6 和支持 ISO CAN FD 的网络接口。

Channel:CAN 通道。

canId:用于将总线状态设置为 BusOff 的消息 ID。

flags:

        0 : 关闭干扰
        1 : 打开干扰

返回值:

        1:已成功打开定义 ID 的干扰。

        0:无法打开定义 ID 的干扰。

代码示例

variables
{
  message 0x1 msg; // define CAN message
}

on key '1'
{
  // 启用干扰
  canConfigureBusOff(msg.msgChannel, msg.Id, 1); 
}
on key '2'
{
  output(msg);
}
on key '3'
{
  //关闭干扰
  canConfigureBusOff(msg.msgChannel, msg.Id, 0); 
}
on key 'r'
{
  resetCanEx(1);
}

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

车载网络测试

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

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

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

打赏作者

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

抵扣说明:

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

余额充值