日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車測(cè)試網(wǎng)

    • 在線課堂

    • 電車測(cè)試

使用Python訪問CANoe COM接口實(shí)踐

2021-03-01 10:49:48·  來(lái)源:北匯信息  作者:北匯信息 鄧淇夫  
 
CANoe提供的COM接口使得外部腳本能夠訪問或控制CANoe軟件,從而實(shí)現(xiàn)自動(dòng)化測(cè)試任務(wù),而易用且具有豐富生態(tài)的Python無(wú)疑是一個(gè)很好的選擇。 本文將介紹CANoe COM基本構(gòu)成、常用COM對(duì)象以及Python腳本調(diào)用CANoe COM的方法 ,在此之前,先介紹一些基本概念。 CAN
CANoe提供的COM接口使得外部腳本能夠訪問或控制CANoe軟件,從而實(shí)現(xiàn)自動(dòng)化測(cè)試任務(wù),而易用且具有豐富生態(tài)的Python無(wú)疑是一個(gè)很好的選擇。 本文將介紹CANoe COM基本構(gòu)成、常用COM對(duì)象以及Python腳本調(diào)用CANoe COM的方法 ,在此之前,先介紹一些基本概念。

CANoe COM Server& Python pywin32

COM全稱Component Object Model,是微軟為Windows平臺(tái)軟件提出的、實(shí)現(xiàn)軟件之間互操作的標(biāo)準(zhǔn)。它不會(huì)規(guī)定軟件的具體實(shí)現(xiàn),而是聲明一種對(duì)象模型,使得滿足這種模型的對(duì)象之間能交互,這些對(duì)象通常被稱為組件(Component)。組件會(huì)實(shí)現(xiàn)特定的功能,而這些功能以特定的方式提供——即接口(Interface),其他組件通過接口使用它們。另外,組件需要經(jīng)過注冊(cè)(Registry),才能被其他軟件發(fā)現(xiàn)和使用。注冊(cè)后的組件向其他軟件提供服務(wù),因此組件將作為服務(wù)端(COM Server),其他想要使用服務(wù)的作為客戶端(COM Client)。

在安裝完成CANoe軟件后,CANoe已經(jīng)在Windows組件服務(wù)管理器中注冊(cè)了CANoe COM Server,如果需要重新注冊(cè),可以在安裝目錄下(默認(rèn)為C:\Program Files\Vector CANoe 14)的Exec64文件夾中找到RegisterComponents.exe,運(yùn)行即手動(dòng)注冊(cè)。

Python pywin32 package,它提供了許多Python擴(kuò)展以調(diào)用Windows API,其中就包括COM組件。由于Python腳本將使用CANoe COM提供的服務(wù),因此Python腳本將作為COM Client,在pywin32包中就對(duì)應(yīng)win32com.client模塊,所以后續(xù)的Python腳本都要導(dǎo)入win32com.client模塊。

了解以上的概念后,下面就看看本文的主要內(nèi)容 

COM Object Hierarchy

在CANoe中,各個(gè)功能模塊按照一定的層級(jí)組織在一起構(gòu)成整個(gè)CANoe軟件。與這些功能模塊直接相關(guān)的COM組件同樣也是按照相應(yīng)的層級(jí)組織的,這就形成了COM Object Hierarchy:


如上圖所示,圖的最左側(cè)是Application對(duì)象,是訪問其他對(duì)象的入口;通過它可以訪問Configuration對(duì)象,而通過Configuration對(duì)象才能訪問CommunicationSetup對(duì)象;

要想設(shè)置CommunicationSetup,就需要按照Application->Configuration->CommunicationSetup從左向右的層級(jí)順序,找到相應(yīng)的屬性或是方法,從而實(shí)現(xiàn)設(shè)置。

Type Library

了解COM Object Hierarchy能幫助快速找到所需功能,但是不能知道實(shí)現(xiàn)所需功能對(duì)象的繼承關(guān)系,為此還需要了解CANoe Type Library。

在CANoe軟件安裝目錄下(默認(rèn)為C:\Program Files\Vector CANoe 14)的Exec32\COMdev目錄中包含了注冊(cè)COM所用的類型庫(kù),如下圖所示CANoe.h頭文件:
 

在CANoe.h頭文件中包含所有CANoe COM對(duì)象的接口定義,比如ITestConfiguration接口: 
 

而如果想要設(shè)置TestConfigurationSettings對(duì)象,從COM Object Hierarchy得知需要從TestConfiguration對(duì)象訪問: 


但是在Type Library中Configuration對(duì)象有多個(gè)ITestConfiguration接口,比如: 
 
 
可以看到,ITestConfiguration2繼承自ITestConfiguration,在它的基礎(chǔ)上又?jǐn)U充了許多方法,比如獲取TestConfigurationSettings對(duì)象的方法get_Settings就在其中。

也就是說(shuō),要通過實(shí)現(xiàn)了ITestConfiguration2接口的TestConfiguration對(duì)象的get_Settings方法,才能獲得TestConfigurationSettings對(duì)象。

為此, 通過win32com.client模塊中的CastTo方法 ,能將TestConfiguration轉(zhuǎn)換成基于ITestConfiguration2接口的對(duì)象。 

COM Object

COM Object Hierarchy中有許多COM對(duì)象,短時(shí)間內(nèi)掌握所有COM對(duì)象是不現(xiàn)實(shí)的, 下面僅針對(duì)常用的、與自動(dòng)化測(cè)試緊密相關(guān)的COM對(duì)象做介紹。

Application

使用Python控制CANoe,首先要獲取關(guān)聯(lián)整個(gè)CANoe進(jìn)程的COM對(duì)象,也就是Application對(duì)象。 通過Dispatch方法就可以獲得關(guān)聯(lián)到當(dāng)前CANoe進(jìn)程的COM對(duì)象 , 如果當(dāng)前并沒有CANoe進(jìn)程 ,則會(huì)啟動(dòng)一個(gè)CANoe進(jìn)程; 而如果想要另外獲得一個(gè)CANoe進(jìn)程,則可以使用DispatchEx方法 。

下面是獲取Application對(duì)象的代碼示例: 
 
 
分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25