基于CANoe的HTTP节点仿真与测试实践

news/2025/3/6 9:53:52/文章来源:https://www.cnblogs.com/polelink/p/18754349

1. 背景

 

 

在汽车电子系统测试中,CANoe作为主流的仿真测试工具,常需与云端服务器、第三方软件或物联网设备进行交互。随着CANoe与外部软件、服务器或设备交互越来越多,直接使用Socket进行通信往往不能满足使用需求,依托于CANoe 的连接功能集(Connectivity Feature Set),以及Distributed Object(DO)功能,可以仿真HTTP节点,实现设备与服务器等之间的通信,保证数据处理的可靠性和便捷性。本文详细解析如何利用CANoe搭建HTTP测试环境,并提供典型应用场景示例。

 

2. HTTP通信模型

 

 

HTTP全称为HyperText Transfer Protocol(超文本传输协议),用于客户端和服务器之间的通信,传输文本、图片、视频等资源。HTTP是在应用层上的协议,基于TCP/IP通信协议来传输数据。HTTP协议为无状态协议,即服务器不保存客户端的历史请求信息,它的请求响应模型为客户端发起请求 → 服务端返回响应。

 

 

 


图1 HTTP通信模型编辑

HTTP 的请求-响应模型通常由以下几个步骤组成:

建立连接:客户端与服务器之间建立连接。在传统的 HTTP 中,这是基于 TCP/IP 协议的。最近的 HTTP/2 和 HTTP/3 则使用了更先进的传输层协议,例如基于 TCP 的二进制协议(HTTP/2)或基于 UDP 的 QUIC 协议(HTTP/3)。

发送请求:客户端向服务器发送请求,请求中包含要访问的资源的 URL、请求方法(GET、POST、PUT、DELETE 等)、请求头(例如,Accept、User-Agent)以及可选的请求体(对于 POST 或 PUT 请求)。

处理请求:服务器接收到请求后,根据请求中的信息找到相应的资源,执行相应的处理操作。这可能涉及从数据库中检索数据、生成动态内容或者简单地返回静态文件。

发送响应:服务器将处理后的结果封装在响应中,并将其发送回客户端。响应包含状态码(用于指示请求的成功或失败)、响应头(例如,Content-Type、Content-Length)以及可选的响应体(例如,HTML 页面、图像数据)。

关闭连接:在完成请求-响应周期后,客户端和服务器之间的连接可以被关闭,除非使用了持久连接(如 HTTP/1.1 中的 keep-alive)。

HTTP常用的方法:


3. CANoe HTTP环境配置

CANoe中HTTP功能配置如下:进入Options→Extensions→Connectivity设置项,然后勾选HTTP Active选项框。注意:此配置需要连接CANoe license才可选择。

 

图2 CANoe HTTP功能配置编辑
 

在使用HTTP进行数据交互之前,需要创建HTTP的vCDL数据库文件,定义相关的IP、端口和方法,以及payload的数据结构。

创建vCDL数据库流程如下:

1) 在Communicating Setup窗口中单击“Open vCDL Editor”;

2) 参考Vector的help文档,根据vCDL的语法(类C#),创建HTTP的接口、对象和数据;

3) 根据HTTP的属性值(communication setup中Objects 窗口),定义HTTP的属性值;

4) 在communication setup窗口中,选择import Data Source导入创建好的vCDL文件;

 

 


图3 HTTP vCDL数据库开发界面编辑

 

如图3所示,HTTP vCDL数据库部分参数说明如下:

1) [HTTPBinding::Host="http://127.0.0.1:9091"]:该行定义了第三方软件的服务器地址与端口号,将接口方法的HTTP请求发送到该地址。

2) interface IClient5:定义了一个接口名称为IClient5。

3) [HTTPBinding::Method=POST]:该行代码是指HTTP的请求方法为POST,这里需注意,HTTP常用的请求方法还有GET,GET方法用于从服务器获取资源,POST 方法用于向服务器提交数据,通常会导致服务器状态的改变,在测试的过程中,通常情况下使用CANoe进行测试,然后再由CANoe去调用第三方软件运行,所以在这里使用POST方法。

4) [HTTPBinding::path="getExecuteResult"]:该行代码定义了HTTP的绑定路径,在这个例子中,路径被设置为"getExecuteResult"。这意味着当客户端想要调用这个服务方法时,它需要在HTTP请求的URL中包含这个路径。完整URL为 http://127.0.0.1:9091/getExecuteResult。

5) [Binding="SerializationService"]:绑定名为 SerializationService 的服务,用于处理数据序列化。

6) [Serialization="JSON"]:这部分指定了序列化和反序列化应该使用的具体格式。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但是JSON是独立于语言的,很多编程语言都支持JSON格式。

7)[SerializationService::Method=Serialize]:指定序列化服务使用的方法名为Serialize。

8) consumed method Datatypes::Result_Response GetExecuteResult(gInput_Testend Input):该行定义了一个由客户端调用名为getExecuteResult的方法,形参类型为gInput_getExecuteResult(该形参类型为用户自定义)。方法的返回值为Datatypes::Result_Response类型。

 

 

4. 使用场景介绍

 

 

通过上面的配置,即完成了一个HTTP Client节点的仿真。要完成双向通信,还需要一个Server节点。下面以python程序仿真的Server和后台服务器的网页显示界面为例,举例说明通信过程:

场景一:CANoe与Python服务端交互

 

图4 CANoe和Python接口交互示例编辑

步骤:

(1) Python服务端:使用requests/FaskAPI搭建HTTP Server,并封装了/RunCase和/getExecuteResult接口;

(2) CANoe启动测试:调用RunCase和getExecuteResult方法发送JSON请求体;

(3) 服务端响应:执行封装好的接口,返回状态码和结果数据;

(4) 结果解析:CANoe Trace窗口自动解析HTTP的报文(如图5)。

 

图5 CANoe Trace窗口HTTP数据解析编辑

场景二:TBox自动化测试

真实服务器一般会有一个网页显示界面,方便测试人员手动的查询后台云端数据。所以可通过HTTP的接口访问后台数据,很好应用于TBox的自动化测试。

 

图6 基于HTTP接口的TBox自动化测试编辑

步骤:

(1) TBox与云端通信:通过4G/5G网络上传车辆状态、接收远控请求等指令;

(2) CANoe仿真客户端:模拟手动下发网页请求,读取网页数据等操作;

(3) 自动化校验:结合CAPL脚本自动判断云端数据(如整车电源模式、门锁状态、车速等)是否符合预期;

 

 

5. 总结

 

 

本方案利用HTTP协议的技术特点,可以解决CANoe与其他软件或者服务器直接交互问题。结合第三方测试工具封装的测试接口,实现 HTTP 通信的自动化测试,提高测试效率和覆盖度。通过本文方案,可显著提升CANoe在车联网、座舱自动化等场景下的测试效率,构建高可靠性的分布式测试系统。

 

北汇信息是一家专注于汽车电子测试领域的企业,对网络测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载网络的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894513.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web前端入门第 16 问:学会使用开发者工具调试 HTML 页面

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。有没有好奇,前面文章中的截图是怎么来的?怎样查看 HTML 的渲染结果? Web 开发者的照妖镜 曾经火狐( Firefox )是 Web 前端开发者最喜爱的浏览器,因为他家有一个神器 firebug 方便调试前端代码。…

Web前端入门第 17 问:前端开发编辑器及插件推荐

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。虽然说 Web 前端开发用记事本也能玩,但正常的开发者绝不用记事本玩(大佬除外)。 想想要用记事本扣一个淘宝、京东,那场景可真是美呆了。 一个好的编辑器,绝对可以事半功倍的。 编辑器可以提供哪些…

Web前端入门第 15 问:学会查阅 HTML 文档

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。HTML的魔法世界,多姿多彩,千变万化。 授人以鱼不如授人以渔,文档阅读是开发者必备的技能,毕竟代码出现 BUG,也要知道为什么会出现 BUG 吧。 就像车辆使用手册一样,多翻翻使用手册,总会发现一些…

Web前端入门第 12 问:HTML 常用属性一览

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。 HTML 常用属性大约 70 个,是否又头大了?脸上笑嘻嘻,心里嘛...嘿嘿... 温馨提示:属性不用死记硬背,多练多写慢慢就记住了。 全局常用属性 全局属性为 HTML 元素的通用属性,可以在任何元素上使用…

Web前端入门第 8 问:HTML !DOCTYPE 申明有何用处?如果没有此申明有什么问题?

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。先电脑端浏览器打开任何一个网页,比如百度。 再用 ctrl + u 快捷键即可查看源码,瞅瞅第一行代码,是不是都是 <!DOCTYPE xxx> 开头。 是否好奇这这行代码有嘛用? DOCTYPE 语法规则声明必须是…

Web前端入门第 9 问:HTML 块级元素,内联块元素,内联元素三者有什么区别?

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。HTML 中的元素根据其默认的 显示类型 主要分为三类:块级元素、内联元素 和 内联块元素。 它们的核心区别在于布局行为和样式控制的支持程度。 块级元素 块级元素(Block Elements)是指在 HTML 中以块…

Easyexcel(1-注解使用)

EasyExcel 是阿里巴巴开源的一个轻量级 Excel 操作框架,专为 Java 开发者设计,支持读取和写入 Excel 文件。它使用注解来简化数据解析和导出工作,特别适用于复杂的 Excel 文件结构和大数据量处理。版本依赖 <dependency><groupId>com.alibaba</groupId>&l…

MES收料批号接口,列名FID无效

原因:主键字段名默认设置了FID,如下图。 解决:将主键字段名修改为实际的主键字段名称即可。

数据处理神器!一款强大的数据处理命令行工具!

dasel —— 一款用于处理和操作多种数据格式的命令行工具,支持对 JSON、YAML、TOML、XML 和 CSV 格式数据进行查询、修改、添加、删除和转换。大家好,我是 Java陈序员。 我们在日常开发中,经常会操作使用一些 JSON、YAML、XML 等格式的数据,对数据进行增删改查和转换操作。…

WEBAPI搜索不到MES收料批号

原因:MES收料批号没有发布菜单 解决:发布菜单后可以正常搜到。

linux 中sed命令删除指定分割符及其最后的一个域

001、[root@PC1 test2]# ls a.txt [root@PC1 test2]# cat a.txt ## 测试数据 W-URI-20 W-HYB-21 aaa fff-ddd-eee ZOM-1 ZOM-9 AWA-A-1 AWA-A-6 [root@PC1 test2]# sed s/-\S[^-]*$// a.txt ## 命令 W-URI W-HYB aaa fff-ddd ZOM ZOM AWA-A AWA-A。

vue+echarts 循环生成多个图表

借鉴网上开源分享 https://blog.csdn.net/weixin_49668076/article/details/114263986<template><!-- 实时数据图表 --><div class="main-container"><el-row class="totalEchart"><el-col :span="8" :key="ind…