CAPL是Vector公司开发的,用来配合它的系列产品使用的一款面向过程的语言。CAPL是Communication Access Programming Language的缩写,从字面意思来说,是专门用于通信访问的编程语言。
最初访问CAN总线,现在已扩展到所有的汽车总线系统,例如 LIN、FlexRay、MOST、J1587,Ethernet,以及ARINC和CANopen等其他一些系统。
CAPL语言是类C语言,C语言是过程语言,所以CAPL也是面向过程,而不是面向对象。CAPL内函数体的执行,由事件触发,比如按下按键’a’时触发on key ‘a’的函数体的执行。CAPL程序在专用的编辑器“CAPL Browser”中开发和编译,所以可以直接访问各种类型的数据库里的对象和变量,比如消息、信号、系统变量和诊断服务对象等。
CAPL的目标一直是尽可能简单地解决特定任务。典型的任务是对收到的消息做出反应、检查和设置信号值以及发送消息。
如下代码实现:
- 观察一个CAN网络的元素(在数据库中描述),例如总线节点、消息和传输信号。
- 当接收到EngineState消息时,它包含的EngineSpeed信号被设置在显示面板上显示。
- 当接收到LightState消息时,它所包含的HeadLight和FlashLight信号将被同步到面板上显示。
variables
{
const long kOFF = 0;
const long kON = 1;
}
on message EngineState
{
@sysvar::Engine::EngineSpeedDspMeter = this.EngineSpeed / 1000.0;
}
on message LightState
{
if (this.dir == rx)
{
SetLightDsp(this.HeadLight, this.FlashLight);
}
else
{
write("Error: LightState TX received by node %NODE_NAME%");
}
}
void SetLightDsp(long headLight, long hazardFlasher)
{
long tmpLightDsp;
tmpLightDsp = 0;
if (HeadLight == kON)
tmpLightDsp = 4;
if (hazardFlasher == kON)
tmpLightDsp += 3;
@sysvar::Lights::LightDsiplay = tmpLightDsp;
}
从上面的介绍和代码可以看出:
CAPL语言对于熟悉C语言的人来说上手很快。而没有接触过编程,或者是只学过Python的人来说,语法上需要有一个学习的过程。毕竟一个是编译型语言,一个是解释型语言;一个是强类型语言,一个是弱类型语言。我的经验是可以先学习了解C#语言,首先C#语言在windows窗体上有一定的优势,以后有可能会用到。而且C#语言是由C和C++衍生出来的,你也可以把CAPL看成是类C#的语言,学会了C#,上手CAPL就会很快。
CAPL作为一门小众的、服务于Vector产品和用于特定场景的语言,就注定了它的学习资料不会很多,更不会像Python那样有大量的第三方库可用。这就造成了它:想学习难入门、想精通难深入、遇到问题难解决。
CAPL语言由于缺少第三方库的支持,导致你想实现很多功能,比如处理某些数据时,需要自己编写基础函数。
官方的Help文档提供了CAPL所必需的内容,但由于其全英文界面,加上内容繁杂,有的时候真的很难找到自己想要的东西。
CAPL语言虽小众,但由于其服务于Vector产品,所以你还需要学会使用CANoe等工具。由于其用于访问汽车总线,你还需要了解各种总线协议:CAN总线、LIN总线、Flexray总线、Ethernet总线、TCP/IP协议、UDS诊断协议、DoIP协议、SOME/IP协议、AVB协议等等。真是一个头两个大!!!
但是随着国内汽车行业的快速发展和竞争加剧,对汽车从业人员,尤其是测试人员,要求越来越高。功能测试岗已经要求熟练使用CANoe,具有CAPL语言编写能力了。不信?随便打开一个招聘网站看看。
卷吧,往死了卷!
既然已经这么卷了,我再来添一把火:《CAPL编程语言》第二期开始报名啦!!!
超30各小时的视频直播,以CAPL语言为主题,代码实操,由易到难,层层深入,环环相扣。全面扩展CAPL以外的知识面,把握细节和底层逻辑。拨开迷雾,看清本质。
这里不只有:
- CAPL基本概念、语法、常用函数介绍
- CAPL使用中的注意事项
- CAPL进阶教程
还有:
- CANoe的功能介绍,包括:软件安装、环境配置、面板设计、诊断通信等
- 计算机数据存储、内存对齐、大小端转换等
- DBC、CDD数据库文件介绍
- Autosar网络管理分析
- UDS诊断服务全功能详解
- 以太网TCP/IP协议介绍
另外还有:
- 多个章节的课后习题及讲解
- 20道基础知识选择题及讲解
- 网络管理、诊断DTC等练习题及讲解
由于大部分名额被熟人所定,目前只有少量几个名额,感兴趣的加我微信报名!
附课程大纲: