CAPL实战之报文发送_系统变量

CAPL(发音为“kapple”),是 Communication Access Programming Language 的缩写。本文是学习CAPL编程进行的总结,可参考方法用其发送报文。

1.打开CANoe软件新建工程,在创建的工程右击,添加虚拟ECU节点,选择运行方式为仿真。

2.在CANoe工具栏打开CAPL界面,编程后编译,没有错误,点击保存。至此,一份完整的CAPL编程就已经完成(程序的含义见第4步)。

3.回到CANoe界面,加载CAPL程序。

4.程序含义:10F(ID可自己编辑,前后一致即可)在1000ms时(时间可以自己调整)按照1000ms的周期(也可是10,100,10000)开始发送0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x24(内容可自行定义,这里字节8是运算值)。11F的Byte1是根据我设定的系统变量而变化,Byte2-7是直接赋值,Byte8也是运算结果。发送出来如下(赋值有变化,可不管),因为11F周期是2000ms,10F是1000ms,后面发送的报文就是10F发送2帧11F发送1帧。

5.编辑的CAPL程序中,定义11F的Byte1根据系统变量D1(随意命名)的值变化而变化。所以,在编程中,用到系统变量的需要在oe中添加,方法如图,系统变量的内容根据实际进行编辑。

6.注意:如果没有添加变量,CAPL中是无法在第33行的@sysvar::命令中找到,手动输入,编译或者运行时会出错。问题来了:如果想改变11F报文的Byte0的值,该怎么办呢?

方法一:提前在变量编辑的时候,把需要发送的值填进去。需要更改的话比较麻烦,需要停止运行后,重新修改保存开始......(实际和10F的byte0直接在CAPL中赋值是一样的)

方法二:使用oe强大的Panel面板,控制此变量,在报文发送过程中,可随意更改。具体如下:

panel面板创建完,选择保存路径,进行保存。panel面板会在独立页面自动打开(如果没有,手动打开即可)

7.至此,我们编写的CAPL脚本和脚本中调用的变量,都已经创建好了。运行添加好capl脚本的CANoe,并且在panel中随意修改,trace窗口监控报文。

写在最后:CAPL编程,Panel面板的功能还有很多,需要自行摸索。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CAPL中,可以使用`frSendFrame()`函数来发送FlexRay报文。`frSendFrame()`函数的语法如下: ``` frSendFrame(frame, channel, txMode, txCycle, txRepetition, txDelay, flags); ``` 参数说明: - `frame`: 待发送的FlexRay报文的数据,类型为`byte`数组。 - `channel`: FlexRay通道号,类型为`byte`。 - `txMode`: 发送模式,类型为`word`。可以选择以下值: - `FR_TX_IMMEDIATE`: 立即发送。 - `FR_TX_DELAYED`: 延迟发送。 - `FR_TX_PERIODIC`: 周期性发送。 - `txCycle`: 发送的循环周期,类型为`word`。当`txMode`为`FR_TX_PERIODIC`时有效。 - `txRepetition`: 发送的重复次数,类型为`byte`。当`txMode`为`FR_TX_DELAYED`时有效。 - `txDelay`: 延迟发送的时间,类型为`word`。当`txMode`为`FR_TX_DELAYED`时有效。 - `flags`: 发送标志,类型为`word`。可以选择以下值: - `FR_BLOCKING`: 阻塞发送,直到发送完成。 - `FR_NON_BLOCKING`: 非阻塞发送,立即返回,不等待发送结果。 下面是一个简单的例子,展示如何使用`frSendFrame()`函数发送一个FlexRay报文: ```c byte data[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; word txMode = FR_TX_IMMEDIATE; word flags = FR_BLOCKING; byte channel = 1; word txCycle = 0; byte txRepetition = 0; word txDelay = 0; frSendFrame(data, channel, txMode, txCycle, txRepetition, txDelay, flags); ``` 这段代码将发送一个长度为8字节的数据为`{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}`的FlexRay报文到通道1。发送模式为立即发送发送标志为阻塞发送

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值