添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首发于 CANoe教程
CANoe教程 | 高级编程 - CAPL DLL

CANoe教程 | 高级编程 - CAPL DLL

CAPL程序可以调用C/C++程序实现的函数接口,这些函数需要按照特定的规则封装在动态链接库(DLL)中。

为什么要用CAPL DLL

  • CANoe提供的函数库已经非常丰富,但是实际开发中总会遇到CANoe函数不够用的情况。
  • CAPL支持的数据类型远没有C/C++丰富,也不支持指针,无法实现更为复杂的算法。
  • 用户在工程项目中已经用C/C++实现的算法可以在CAPL DLL中封装成接口供CANoe使用,避免重复造轮子。

如何创建一个CAPL DLL工程

CANoe提供了CAPLdll的Demo。安装CANoe后Demo的路径在: C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 13.0.155\Programming\CAPLdll 路径中包含两个VS Project和一个CMakeProject.

我们可以根据需要选择demo工程作为base进行开发。 以VS 2017 Project为例,进入目录后双击capldll.sh打开vs工程:


如何将C/C++函数导出到CAPL

dll通过一个函数表(function table)将函数导出到CAPL。

表中第一行包含版本信息,格式定义:

需要导出的函数定义格式:

如何创建CAPL 回调函数

CAPL回调函数可以在CANoe运行时被CAPL DLL独立调用。CAPL回调函数的接口声明描述可以在文件VIA_CDLL.h 和 VIA.h中找到。 Demo中实现了一个CaplInstanceData类来处理回调函数,用户可以参考这个类来定义自己的回调函数。 在CAPL DLL中获取CAPL函数句柄:

在CAPL文件中实现回调函数:

注意:CAPL文件中的回调函数参数定义要与CAPL DLL工程中一致。

如何在CAPL中使用DLL

将DLL集成到CAPL中有两种方式:

  • 从Options添加
  • 在CAPL文件中添加

文章被以下专栏收录

    CANoe教程

    持续分享CANoe在总线开发过程中的使用技巧