超文本傳輸協(xié)議(HTTP,Hypertext Transfer Protocol)是一種用于在客戶端與服務(wù)器之間傳輸數(shù)據(jù)的應(yīng)用層協(xié)議,起初主要服務(wù)于Web場景,如今被廣泛引入汽車電子、工業(yè)4.0、醫(yī)療等領(lǐng)域。HTTP采用請求-響應(yīng)模型,是一種無狀態(tài)協(xié)議,每個(gè)請求都是獨(dú)立的,并攜帶服務(wù)器完成處理所需的必要信息??蛻舳送ㄟ^統(tǒng)一資源標(biāo)識符(URI,Uniform Resource Identifier)來指示目標(biāo)資源,并借助標(biāo)準(zhǔn)化的請求方法及頭部字段來表達(dá)請求目的,服務(wù)器則返回包含狀態(tài)碼、響應(yīng)頭和消息體的響應(yīng)結(jié)果。在互聯(lián)應(yīng)用的開發(fā)和測試過程中,引入高效的HTTP通信仿真方案,可以在系統(tǒng)早期階段模擬通信信息,幫助快速發(fā)現(xiàn)和定位問題,從而提升系統(tǒng)可靠性與整體開發(fā)效率。
CANoe.Connectivity功能概述
CANoe 19新增的Option Connectivity專為互聯(lián)應(yīng)用的仿真和測試而設(shè)計(jì),支持HTTP/REST、MQTT、Modbus等架構(gòu),并可集成無線終端設(shè)備(如BLE、NFC、UWB智能設(shè)備),實(shí)現(xiàn)對復(fù)雜互聯(lián)系統(tǒng)的全面分析與驗(yàn)證。
在HTTP支持方面,具備以下優(yōu)勢:
可仿真HTTP客戶端或服務(wù)器
支持常用HTTP方法:GET、POST、PUT、DELETE
多種實(shí)現(xiàn)方式,可靈活應(yīng)用于快速建?;虻讓訁f(xié)議調(diào)試場景
內(nèi)置多種數(shù)據(jù)序列化方式(如JSON、Google Protobuf、Plain Text)
可結(jié)合VN以太網(wǎng)接口卡,進(jìn)行底層協(xié)議分析
支持使用CAPL、C#和Python進(jìn)行測試和應(yīng)用程序開發(fā)
支持通過面板和信號發(fā)生器,實(shí)現(xiàn)信號與狀態(tài)曲線的交互式激勵(lì)和可視化

圖1:CANoe.Connectivity支持多種協(xié)議
HTTP通信在CANoe中的實(shí)現(xiàn)方式
在CANoe中,HTTP通信可通過兩種方式實(shí)現(xiàn):
基于分布式對象(Distributed Objects,DOs)建模,在vCDL中定義數(shù)據(jù)結(jié)構(gòu)和接口并綁定HTTP屬性,隨后實(shí)例化為分布式對象,應(yīng)用層可直接調(diào)用對象方法發(fā)送請求,無需關(guān)心底層實(shí)現(xiàn)(如HTTP請求的構(gòu)建過程),適合URI固定且交互邏輯穩(wěn)定的場景;
使用HTTP Client API,在應(yīng)用層通過內(nèi)置對象(_HTTP::Client)顯式構(gòu)建并發(fā)送請求,更適合靈活控制請求內(nèi)容的場景。
無論是在vCDL中創(chuàng)建分布式對象,還是直接使用內(nèi)置的HTTP對象,應(yīng)用程序都可以使用CAPL、C#或Python腳本調(diào)用對象方法,實(shí)現(xiàn)HTTP請求的發(fā)送和響應(yīng)的接收:

圖2:HTTP對象
CANoe與SUT的HTTP連接方案
CANoe與被測系統(tǒng)(SUT)之間有兩種連接方式:
電腦直連,使用操作系統(tǒng)的TCP/IP協(xié)議棧。這種方式適用于需要聯(lián)網(wǎng)的測試場景,例如訪問云服務(wù)、互聯(lián)網(wǎng)API或遠(yuǎn)程服務(wù)器。
VN以太網(wǎng)接口卡連接,使用CANoe自帶的TCP/IP協(xié)議棧。此時(shí)需要為HTTP對象配置兩個(gè)關(guān)鍵屬性:HTTPBinding::Network和HTTPBinding::Node,屬性值需要與Simulation Setup中的網(wǎng)絡(luò)名稱和節(jié)點(diǎn)名稱保持一致,適用于局域網(wǎng)測試或與CAN/LIN/Ethernet等總線聯(lián)合仿真,通常還需要配合其他Option一起使用。

圖3:CANoe與SUT的HTTP連接方案
HTTP客戶端仿真示例(基于分布式對象建模)
本示例展示了如何利用CANoe的Connectivity功能,在一個(gè)可直接訪問外部服務(wù)的網(wǎng)絡(luò)環(huán)境中快速訪問math.js web service,實(shí)現(xiàn)HTTP通信。
新建CANoe工程
使用Distributed Objects模板創(chuàng)建新的CANoe工程:

圖4:新建CANoe工程
新建vCDL文件
在Communication Setup中創(chuàng)建HTTP Binding的數(shù)據(jù)源vCDL:

圖5:創(chuàng)建vCDL
定義分布式對象DOs
通過vCDL描述HTTP接口,使用Consumed Method類型的分布式對象構(gòu)建HTTP請求和響應(yīng)結(jié)構(gòu)。結(jié)構(gòu)體類型的變量默認(rèn)采用JSON序列化,結(jié)構(gòu)體成員名稱需與JSON鍵名一致。通過配置HTTP綁定屬性,可指定服務(wù)器地址、基礎(chǔ)路徑和請求方法,從而實(shí)現(xiàn)標(biāo)準(zhǔn)化的HTTP通信建模。

圖6:基于分布式對象建模的vCDL
實(shí)現(xiàn)HTTP通信
使用CAPL語言實(shí)現(xiàn)客戶端的通信邏輯,包括發(fā)送請求、接收響應(yīng)等。

圖7:基于分布式對象建模的CAPL實(shí)現(xiàn)
數(shù)據(jù)分析和驗(yàn)證
通過Trace窗口對返回的數(shù)據(jù)進(jìn)行解析與驗(yàn)證,確保通信邏輯與預(yù)期一致。

圖8:數(shù)據(jù)分析
-
服務(wù)器
+關(guān)注
關(guān)注
14文章
10250瀏覽量
91474 -
HTTP
+關(guān)注
關(guān)注
0文章
537瀏覽量
35343 -
CANoe
+關(guān)注
關(guān)注
4文章
85瀏覽量
9763
原文標(biāo)題:基于CANoe實(shí)現(xiàn)HTTP通信
文章出處:【微信號:VectorChina,微信公眾號:Vector維克多】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
新手CANOE使用總結(jié)
在CanoE和TC3x7應(yīng)用套件之間建立通信,如何實(shí)現(xiàn)通過串行通信從CanoE收到的數(shù)據(jù)幀?
CANoe:網(wǎng)絡(luò)和ECU開發(fā)、測試和分析的專業(yè)工具
CANoe怎么實(shí)現(xiàn)數(shù)據(jù)采集
CANOE教程之CANOE的使用手冊免費(fèi)下載
使用CANoe實(shí)現(xiàn)C-V2X直連通信的配置流程
如何快速上手CANoe總線設(shè)計(jì)與開發(fā)
如何實(shí)現(xiàn)Linux環(huán)境和CANoe工具之間的數(shù)據(jù)交互
淺談CANoe實(shí)現(xiàn)SOA仿真測試
CANoe進(jìn)階功能:Multi CANoe
CANoe集成解決方案
Python與CANoe/CANoe4SW
CANoe仿真HTTP節(jié)點(diǎn)的實(shí)戰(zhàn)秘籍大公開
CANoe中ADAS功能集介紹
如何基于CANoe實(shí)現(xiàn)HTTP通信
評論