CPAL脚本自动化测试 ———— Message的相关属性

在使用CANoe的过程中,我们不可避免的会跟Message打交道。对于一个初学者了来说,message有什么属性,我们要怎么用好这个message在实现自动化的过程中还是很重要的。

  1. .can 定义接收帧的传输通道或通道。具体的使用例子如下。例子定义了message 0x100的通道为CAN 1.
message 0x100 msg = {dlc = 2, word(0) = 0x1234};

on key '1' {
  write("sende via CAN 1");
  msg.CAN = 1;
  output(msg);
}

  1. .ID 定义了Message的ID 编号。如何使用ID 编号见例子。例子中说明了,当我们收到Message ID 为0x600的时候,write窗口打印一行文字并进入trigger()函数。
on message * {
  if (this.ID == 0x600) {
    write("message 0x600 received; triggering logging...");
    trigger();
  }
}

  1. .name 我们只有读取的权限,并不能对message的名称进行更改,因为name属性已经被数据库定义好且只有读取的权限。

  2. .DIR 定义传输方向。可能存在的值为Rx,Tx,TXREQUEST。其中TXREQUEST并不明白是一种怎样的传输类型,所以无法展开。使用的例子如下。例子中定义,如果0x100的DIR属性是RX,则打印message 0x100 received;如果0x100的DIR属性是TX,则打印message 0x100 sent。

on message 0x100 {
  if (this.DIR == Rx) {
    write("message 0x100 received");
  }
  if (this.DIR == Tx) {
    write("message 0x100 sent");
  }
}

这里通过查阅资料找到对于三种状态的描述
在这里插入图片描述

  1. .RTR 定义了远程传输请求的状态。可能存在的状态时0(无远程传输请求)和1(远程传输请求)。使用例子如下。
message 0x100 rmsg;
rmsg.RTR = 1;
output(rmsg);
  1. .type DIR和RTR结合使用可进行有效评估。具体的评估方法为: (TYPE = (RTR << 8) | DIR )。使用的例子如下。
message 0x100 resp_msg = {dlc = 2, word(0) = 0x1234};

on message 0x100 {
  if (this.TYPE == RXREMOTE) {
    // remote frame 0x100 received
    output(resp_msg);
  }
}

关于Type具体存在哪些情况,请看下面的说明。
在这里插入图片描述

  1. .dlc 定义了message的长度。具体的使用例子如下。但是因为现在协议的不同,所以每种协议下的dlc属性是不一样的。例如CAN的数据长度就为8 bytes,CAN FD的数据长度为64 bytes。

在这里插入图片描述

on message OneByteMessage {
  if (this.DLC != 1) {
    write("error: OneByteMessage has DLC != 1");
    stop();
  }
}

  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小趴菜_自动驾驶搬砖人

谢谢大爷赏饭吃

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

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

打赏作者

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

抵扣说明:

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

余额充值