CAPL就是Communication Application Programming Laguage的缩写,CAPL类似于C语言的语法,因此所有的语法请参考C语言教程,这里不在这里进行详述,关于C语言,毫无疑问的,首先推荐大家看谭浩强老师的书,经典中的经典,看完这本C语言应该没问题了。CAPL在CANoe中起到重要的作用,他将所有的部分联系起来(请看下图)现在我们给予上一节的基础上,来着重介绍CAPL编程。

CAPL语法是C语言的,又有一些C++的特性,this指针,事件等,对于事件的理解可以学习任意一种面对对象语言,首推C#.NET,可以参考我的博客学习,当然这个似乎比CAPL本身更加难,事件也更加多,但这并不妨碍对事件的理解,其中的事件类型如下图:

下面来几个小例子帮助理解

来个CANoe版本的hello world!来兴奋一小下吧。开整~

在打开CANoe,新建个工程,在Simulation Setup中加个Network node ,点铅笔,忘了吗,上一节刚讲过,右键Start->New,键入如下代码

编译后,关闭CAPL Brower。运行CANoe工程,结果如下,哇塞成功咯,好有成就感啊。

这个例子似乎跟CAN通讯没啥太大关系啊,好,我们接下来再做一个例子

运行结果如下,按键盘b键,将发送一个CAN消息,连dlc是啥都不知道的同学,推荐先学习一下CAN基础知识,推荐瑞萨公司的《CAN入门书》,讲的非常的好。

运行刚刚的那个例子你会发现,按一下b,只发送一条消息,但在实际应用中CAN消息都是循环连续发送的,我们要对刚刚的程序进行一些修改。完成这样的功能。程序如下:

variables
{
    message 0x400 msgA = {dlc=1};
    mstimer timerA;
    int conditionA = 0;
}

on key 'a'
{
    conditionA = !conditionA;
    if(conditionA ==1)
    {
        setTimer(timerA,200);
    }
}

on timer timerA
{
    if(conditionA==1)
    {
        setTimer(timerA,200);
    }
    msgA.byte(0) = msgA.byte(0)-1;
    output(msgA);
}

运行结果如下:按A键,Timer启动,发送消息

接下来我们一起来看总结一下CAPL编程的要点:

CAPL编程的学习,需要通过不断在实践中的积累,此外别无他法。以上真真儿的只是入门,如果你真心看过,不如你真心写过。

http://www.cnblogs.com/dongdonghuihui/archive/2012/09/26/2704619.html

CANoe 入门 Step by step系列(二)CAPL编程【转】的更多相关文章

  1. ASP.Net Core 2.2 MVC入门到基本使用系列 (二)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

  2. ASP.Net Core 2.2 MVC入门到基本使用系列 (二)(转)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

  3. CANoe 入门 Step by step系列(一)基础应用【转】

    CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多. 硬件我使用的是CAN case XL. 1,CANoe软件的安装很简单,先 ...

  4. 【转载】CANoe 入门 Step by step系列(一)基础应用

    来源:http://www.cnblogs.com/dongdonghuihui/archive/2012/09/26/2704611.html CANoe是Vector公司的针对汽车电子行业的总线分 ...

  5. sed修炼系列(二):sed武功心法(info sed翻译+注解)

    sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)sed修炼系列(三):sed高级应用之实现窗口滑动技术sed修炼系列(四):sed中 ...

  6. CANOE入门(一)

    CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多. 硬件我使用的是CAN case XL. 1,CANoe软件的安装很简单,先 ...

  7. ASP.Net Core 2.2 MVC入门到基本使用系列 (一)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

  8. ASP.Net Core 2.2 MVC入门到基本使用系列 (三)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

  9. 【转载】CANoe 入门 Step by step系列(二)CAPL编程

    来源:http://www.cnblogs.com/dongdonghuihui/archive/2012/09/26/2704619.html CAPL就是Communication Applica ...

随机推荐

  1. 阐明iOS证书和provision文件

    译:阐明iOS证书和provision文件 许多iOS开发人员都会和你说在iOS开发很困惑的问题之一,将app真正运行在真实的设备(iPhone iPad而不是模拟器),因为所有的这些都会涉及从苹果获 ...

  2. AppiumLibrary

    Strategy Example Description identifier Click Element|identifier=my_element Matches by @id or @name ...

  3. Kerberos认证流程详解

    Kerberos是诞生于上个世纪90年代的计算机认证协议,被广泛应用于各大操作系统和Hadoop生态系统中.了解Kerberos认证的流程将有助于解决Hadoop集群中的安全配置过程中的问题.为此,本 ...

  4. GXT之旅:第三章:表单和窗口(4)——表单的提交和RPC

    表单使用HTTP提交 表单有两种提交方式,第一种就是传统的HTTP提交. 最直接的步骤就是: 使用FormPanel的setAction()方法,去定义submit的URL 使用FormPanel的i ...

  5. 最简单的基于FFMPEG的封装格式转换器(无编解码)

    本文介绍一个基于FFMPEG的封装格式转换器.所谓的封装格式转换,就是在AVI,FLV,MKV,MP4这些格式之间转换(相应.avi,.flv,.mkv,.mp4文件).须要注意的是,本程序并不进行视 ...

  6. Android开发:如何安全的中止一个自定义线程Thread

    http://blog.csdn.net/yanzi1225627/article/details/8582078 经研究,我推荐这种写法: /*自定义线程*/ class MyThread impl ...

  7. java 集合排序(转)

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

  8. linux下so动态库一些不为人知的秘密 系列

    http://blog.chinaunix.net/uid-27105712-id-3313293.html http://www.cnblogs.com/gulvzhe/archive/2012/0 ...

  9. lua function

    This is the main reference for the World of Warcraft Lua Runtime. Note that these are mostly standar ...

  10. hadoop错误FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOException There appears to be a gap in the edit log

    错误: FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOExcep ...