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

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

 

CAPL代码诊断脚本如下:

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

 

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

 

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

 

4、自动化测试脚本编写

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

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

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

 

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。

 

 

 

 

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

 

运行结果如下:

posted @   laoluoits  阅读(1916)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示