CANoe仿真HTTP节点的实战秘籍大公开
媒体从业人员要坚守真实、公正、公开的职业道德,传递真实信息 #生活知识# #社会生活# #职业道德#
一、 背景
在汽车电子系统测试中,CANoe作为主流的仿真测试工具,常需与云端服务器、第三方软件或物联网设备进行交互。随着CANoe与外部软件、服务器或设备交互越来越多,直接使用Socket进行通信往往不能满足使用需求,依托于CANoe 的连接功能集(Connectivity Feature Set),以及Distributed Object(DO)功能,可以仿真HTTP节点,实现设备与服务器等之间的通信,保证数据处理的可靠性和便捷性。本文详细解析如何利用CANoe搭建HTTP测试环境,并提供典型应用场景示例。
二、HTTP通信模型
HTTP全称为HyperText Transfer Protocol(超文本传输协议),用于客户端和服务器之间的通信,传输文本、图片、视频等资源。HTTP是在应用层上的协议,基于TCP/IP通信协议来传输数据。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常用的方法:
三、CANoe HTTP环境配置
CANoe中HTTP功能配置如下:进入Options→Extensions→Connectivity设置项,然后勾选HTTP Active选项框。注意:此配置需要连接CANoe license才可选择。
在使用HTTP进行数据交互之前,需要创建HTTP的vCDL数据库文件,定义相关的IP、端口和方法,以及payload的数据结构。
创建vCDL数据库流程
在Communicating Setup窗口中单击“Open vCDL Editor”;
参考Vector的help文档,根据vCDL的语法(类C#),创建HTTP的接口、对象和数据;
根据HTTP的属性值(communication setup中Objects 窗口),定义HTTP的属性值;
在communication setup窗口中,选择import Data Source导入创建好的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类型。
四、使用场景介绍
通过上面的配置,即完成了一个HTTP Client节点的仿真。要完成双向通信,还需要一个Server节点。下面以python程序仿真的Server和后台服务器的网页显示界面为例,举例说明通信过程:
1.场景一:CANoe与Python服务端交互
步骤:(1)Python服务端:使用requests/FaskAPI搭建HTTP Server,并封装了/RunCase和/getExecuteResult接口;
(2)CANoe启动测试:调用RunCase和getExecuteResult方法发送JSON请求体;
(3)服务端响应:执行封装好的接口,返回状态码和结果数据;
(4)结果解析:CANoe Trace窗口自动解析HTTP的报文(如图5)。
2.场景二:TBox自动化测试
真实服务器一般会有一个网页显示界面,方便测试人员手动的查询后台云端数据。所以可通过HTTP的接口访问后台数据,很好应用于TBox的自动化测试。
步骤:(1)TBox与云端通信:通过4G/5G网络上传车辆状态、接收远控请求等指令;(2)CANoe仿真客户端:模拟手动下发网页请求,读取网页数据等操作;(3)自动化校验:结合CAPL脚本自动判断云端数据(如整车电源模式、门锁状态、车速等)是否符合预期;
五、总结
本方案利用HTTP协议的技术特点,可以解决CANoe与其他软件或者服务器直接交互问题。结合第三方测试工具封装的测试接口,实现 HTTP 通信的自动化测试,提高测试效率和覆盖度。通过本文方案,可显著提升CANoe在车联网、座舱自动化等场景下的测试效率,构建高可靠性的分布式测试系统。
北汇信息是一家专注于汽车电子测试领域的企业,对网络测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载网络的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。
注:文中部分图片来源于Vector。
网址:CANoe仿真HTTP节点的实战秘籍大公开 https://www.yuejiaxmz.com/news/view/813286
相关内容
收纳秘籍大公开冻龄男神吴尊突破自我挑战反派角色,保养秘籍大公开
冬季采暖节省攻略:燃气壁挂炉节能秘籍大公开
陶师傅仿古砖推荐 仿古瓷砖保养秘籍
美容护肤秘籍大公开,你的肌肤保养小贴士!
半年湿疹零复发!个人护理秘籍大公开
家居清洁十大秘籍 周末回家“开战”
【CFX自定义函数编写秘籍】:扩展仿真功能与提高效率的6大技巧
韩国美女全智贤的护肤秘籍大公开
揭秘烹饪秘籍:真实菜谱大揭露