欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

车载测试系列:基于 CANoe CAPL 代码的诊断测试

最编程 2024-03-11 12:43:52
...

Canoe有独立的编译开发软件CAPL,CAPL是一个编译器,在CAPL里面编写代码,编译后可以在Canoe中运行。测试工程师可以在CAPL编写自动化测试脚本,在Canoe中自动发送Can报文,以及判断接收的Can报文。

车载测试系列:基于CANoe CAPL代码的诊断测试_自动化测试

 

CAPL代码诊断脚本如下:

1、打开Canoe,在Simulation中,点击Simulation Setup。在红蓝线处右键,然后选择CAPL Test Module。

车载测试系列:基于CANoe CAPL代码的诊断测试_右键_02

 

2、在Test 1方块左下角,点击小铅笔图标,弹出对话框,新建一个CAPL的程序文件,扩展名为.Can。

车载测试系列:基于CANoe CAPL代码的诊断测试_软件测试_03

 

3、输入新建的文件名后会自动弹出CAPL编辑的界面。之后在这里编写测试脚本代码。

车载测试系列:基于CANoe CAPL代码的诊断测试_右键_04

 

4、自动化测试脚本编写

4.1 Includes{}里面是包含的头文件。variables{}是定义全局变量的地方,如需要定义一些全局变量,可以在里面定义。

4.2 发送报文,首先要建立一帧报文。message * req,resp; message是报文的定义变量,建立了两个报文,req是要发送的报文,resp是要接收的报文。

4.3 之后需要建立一个MainTest函数,类似单片机main()的原理,程序会在这个函数里面运行。

车载测试系列:基于CANoe CAPL代码的诊断测试_软件测试_05

 

4.4 编辑报文内容并发送。首先定义报文的长度为8,req.dlc=8; 定义报文的ID为0x7DF(诊断的功能寻址请求ID),req.id = 0x7DF; 然后定义报文8个byte的内容,这里定义的是诊断功能寻址进入扩展会话模式,02 10 03
4.5 发送报文,outout()是发送报文的函数,直接调用即可,output(req); 点击左上角Compile编译,之后就可以进入Canoe中运行。CAPL模块还需要配置才能运行。需要在test的方块上右键,选择Configuration,之后immediately打上勾,点击OK。

车载测试系列:基于CANoe CAPL代码的诊断测试_右键_06

 

车载测试系列:基于CANoe CAPL代码的诊断测试_软件测试_07

 

车载测试系列:基于CANoe CAPL代码的诊断测试_右键_08

 

车载测试系列:基于CANoe CAPL代码的诊断测试_软件测试_09

 

  • 4. 6 判断接收指定报文。
  • testWaitForMessage(resp.id,5100)函数,等待指定的报文,resp.id是要接收的报文ID,5100是在5100ms内等待。testGetWaitEventMsgData(resp)函数,获取这帧报文的内容,通过write打印出来。

车载测试系列:基于CANoe CAPL代码的诊断测试_软件测试_10

 

运行结果如下:

车载测试系列:基于CANoe CAPL代码的诊断测试_右键_11

作者: ​​千里和他的软件测试​​