带你玩转车载测试——CAPL入门篇五:CAPL常用库函数介绍(一)

本文是《带你玩转车载测试——CAPL入门篇》系列课程的一部分,由M哥分享。主要介绍了车载控制器开发测试中CAPL的常用库函数,包括CAN总线、LIN总线、诊断、TestSupport、CANDisturbanceInterface、RS232串口和FileAccess等库的功能和示例,如CAN总线的负载率获取、错误帧发送及CAN控制器复位等操作。
摘要由CSDN通过智能技术生成

欢迎大家学习我的《带你玩转车载测试——CAPL入门篇》系列课程,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。

学习过程中如有任何疑问,可底下评论!

如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走一波!感谢各位的支持!

       为了方便用户能够灵活使用CAPL进行开发,其内置了我们所使用的大部分库函数。在车载开发测试领域常用的库函数可以分为以下几类:

  1.      (1) CAN总线库函数,包含CAN软硬件相关函数,如:canGetConfiguration(long channel, canSettings settings)

       (2) LIN总线库函数,如:linStartScheduler()等;

      (3) 诊断库函数,包括诊断请求的发送及响应等,如:diagSendRequest (diagRequest obj)等;

       (4) Test Support库函数

       (5) CAN Disturbance Interface库函数,主要借助VH6501进行干扰测试等,如:BusOff和采样点测试;

       (6) RS232串口库函数,主要用于在测试中控制可编程电源进行自动化测试;

       (7) File Accress库函数,包括打开文件及获取文件数据等函数,如:fileGetString (char buff[], long buffsize, dword fileHandle)获取文件内字符串;

       接下来将对上述常用库函数进行一一举例说明。

1.CAN总线库函数

       CAN总线库函数众多,这里只介绍几个常用的,如下表1所示:

表1 CAN常用库函数
函数名功能
canGetBusLoad返回CAN通道的负载率百分比
canOutputErrorFrame

向CAN总线输出指定错误帧

canGetErrorFrameCount返回CAN通道的总错误帧数
resetCan复位CAN控制器
resetCanEx复位指定通道的CAN控制器
output向总线输出CAN报文或错误帧

(1)canGetBusLoad:返回CAN通道的负载率百分比,如下图1所示:当按下按键‘a’时,write窗口输出当前的总线负载率;

includes
{
  
}

variables
{
    long gBusLoad;
}

on key 'a'{
  gBusLoad = canGetBusLoad(1,eCurrValue);
  write("CAN总线负载率为:%d",gBusLoad);
}
图1

(2)向CAN总线输出错误帧,可以采用output和canOutputErrorFrame函数,同时可以通过canGetErrorFrameCount函数来返回CAN通道的总错误帧数量。如下图2所示:当按下按键‘a’时,Trace窗口输出错误帧,并且Write窗口输出总的错误帧数量;

includes
{
  
}

variables
{
  long gErrCount;
}

on key 'a'{
  output(errorframe);
  gErrCount = canGetErrorFrameCount(1);
  write("CAN总线错误帧发送成功,错误帧数量为:%d",gErrCount);
}
图2

(3)当CAN控制器产生BusOff进行复位时,就必然使用resetCan和resetCanEx这两个函数;如:当按下按键‘a’时,CAN控制器复位;

on busOff
{
  resetCan();
  //resetCanEx(1);
}

(4)output函数不仅可以向总线发送错误帧,还能发送任意报文,如下图3所示:当定时器触发后,报文0x100被发送到总线上;

includes
{
  
}

variables
{
  msTimer tSendMsg;
  message * gCanMsg;
}

on start
{
  setTimer(tSendMsg,200);
}
on timer tSendMsg
{
  gCanMsg.id = 0x100;
  gCanMsg.dlc = 8;
  gCanMsg.byte(1) = 0x0;
  gCanMsg.byte(1) = 0x01;
  gCanMsg.byte(2) = 0x02;
  gCanMsg.byte(3) = 0x03;
  gCanMsg.byte(4) = 0x04;
  gCanMsg.byte(5) = 0x05;
  gCanMsg.byte(6) = 0x06;
  gCanMsg.byte(7) = 0x07;
  
  output(gCanMsg);
  cancelTimer(tSendMsg);
}
图3

感谢对本期内容不遗余力的学习,下期内容即将奉上,欢迎下次光临!

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车测试M哥

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值