使用Python訪問CANoe COM接口實(shí)踐_第1頁
使用Python訪問CANoe COM接口實(shí)踐_第2頁
使用Python訪問CANoe COM接口實(shí)踐_第3頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

使用Python訪問CANoeCOM 接口實(shí)踐北匯信息——鄧淇夫CANoe提供的COM接口使得外部腳本能夠訪問或控制CANoe軟件,從而實(shí)現(xiàn)自動(dòng)化試任務(wù),而易用且具有豐富生態(tài)的Python無疑是一個(gè)很好的選擇。本文將介紹CANoeCOM基本構(gòu)成常用COM對(duì)象以及Python腳本調(diào)用CANoeCOM 的方法在此之前,先介紹一些基本概念。CANoeCOMServer&Pythonpywin32COM全稱ComponentObjectModel ,是微軟為Windows平臺(tái)軟件提出的、實(shí)現(xiàn)軟之間互操作的標(biāo)準(zhǔn)它不會(huì)規(guī)定軟件的具體實(shí)現(xiàn)而是聲明一種對(duì)象模型使得滿足這種型的對(duì)象之間能交互這些對(duì)象通常被稱組(Component組件會(huì)實(shí)現(xiàn)特定的功能而這些功能以特定的方式提供——即接Interfac其他組件通過接口使用它們另外,組件需要經(jīng)注冊(cè)(Registr,才能被其他軟件發(fā)現(xiàn)和使用。注冊(cè)后的組件向其他軟件提供服務(wù),因此組件將作服務(wù)COMServer,其他想要使用服務(wù)的作客戶COMClien。在安裝完成CANoe軟件后,CANoe已經(jīng)在Windows 組件服務(wù)管理器中注冊(cè)了CANoeCOMServer,如果需要重新注冊(cè),可以在安裝目錄下(默認(rèn)為C:\ProgramCANoe14)的Exec64文件夾中找到RegisterComponents.exe,運(yùn)行即手動(dòng)注冊(cè)。Pythonpywin32package,它提供了許多Python擴(kuò)展以調(diào)用WindowsAPI,其中就包括COM組件,由于Python腳本將使用CANoeCOMPython腳本將作為COMClient,在pywin32包中就對(duì)應(yīng)win32com.client模塊,所以后續(xù)的Pythonwin32com.client了解以上的概念后,下面就看看本文的主要內(nèi)容。COMObjectHierarchy在CANoe中,各個(gè)功能模塊按照一定的層級(jí)組織在一起構(gòu)成整個(gè)CANoe軟件。與這些功能模塊直接相關(guān)的COM組件同樣也是按照相應(yīng)的層級(jí)組織的,這就形成了COMObjectHierarchy:如上圖所示,圖的最左側(cè)是Application對(duì)象,是訪問其他對(duì)象的入口;通過它可以訪問Configuration對(duì)象,而通過Configuration對(duì)象才能訪問CommunicationSetup對(duì)象;要 想 設(shè) 置 CommunicationSetup , 就 需 要 按 照Application->Configuration->CommunicationSetup從左向右的層級(jí)順序找到相應(yīng)的屬性或是方法,從而實(shí)現(xiàn)設(shè)置。TypeLibrary了解COMObjectHierarchy能幫助快速找到所需功能,但是不能知道實(shí)現(xiàn)所需功能對(duì)象CANoeType。在CANoe軟件安裝目錄下(默認(rèn)為C:\ProgramFiles\VectorCANoe的Exec32\COMdevCOM所用CANoe.h在CANoe.h頭文件中包含所有CANoeCOM對(duì)象的接口定義,比如ITestConfiguration接口:TestConfigurationSettingsCOMObjectHierarchy從TestConfiguration對(duì)象訪問:但是在TypeLibrary中Configuration對(duì)象有多個(gè)ITestConfiguration接口,比如:可以看到,ITestConfiguration2繼承自ITestConfiguration,在它的基礎(chǔ)上又?jǐn)U充了許多方法,比如獲取TestConfigurationSettings對(duì)象的方法get_Settings就在其中。也就是說,要通過實(shí)現(xiàn)了ITestConfiguration2接口的TestConfiguration對(duì)象的get_Settings方法,才能獲得TestConfigurationSettings對(duì)象。為此,通過win32com.client模塊中的CastTo方法,能將TestConfiguration轉(zhuǎn)換成基于ITestConfiguration2接口的對(duì)象。COMObjectCOMObjectHierarchy中有許多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ì)象,也就是ApplicationDispatch方法就可以獲得關(guān)聯(lián)到當(dāng)前CANoe進(jìn)程的COM對(duì)象,如果當(dāng)前并沒有CANoe進(jìn)程,則會(huì)啟動(dòng)一個(gè)CANoe進(jìn)程;而如果想要另外獲得一個(gè)CANoeDispatchEx下面是獲取Application對(duì)象的代碼示例:在以上示例中,CANoe各部分功能封裝在CANoe類中,在CANoe類初始化時(shí),把獲得的Application對(duì)象保存在CANoe類的App成員中,這樣在CANoe類的其他方法中,就可以通過使用App成員來訪問Application對(duì)象。有了Application對(duì)象,才能訪問CANoe工程的各個(gè)功能模塊,比如打開CANoe工程:而在open_canoe_configApplicationOpen方法打開特定的CANoe工程,具體Application對(duì)象的接口定義這里僅展示IApplication的部分方法,其他方法)如下:Measurement要想控制CANoeMeasurementApplicationself.App.Measurement在Measurement對(duì)象的接口定義中,可以看到Start方法,使用Measurement.Start()就能啟動(dòng)CANoe測(cè)量。下面是啟動(dòng)CANoe測(cè)量的代碼示例:SystemVariables系統(tǒng)變量作為CANoe的對(duì)象。從COMObjectHierarchy中可以看到,系統(tǒng)變量Variable對(duì)象是按照Application->System->Namespaces->Namespace->Variables->Variable順序訪問的。其中Namespaces和Variables分別表示Namespace和Variable對(duì)象的集合,因此可以使用Namespace名稱(Variable名稱)作為索引,從Namespaces(Variables)中獲得相應(yīng)的Namespace(Variable)對(duì)象。Variableget_Valueput_ValuePythonValueVariable.Value取值或賦值。下面是獲得系統(tǒng)變量值的代碼示例:if獲得Namespacessystem_namespaces變量中;然后使用剛保存的變量,以ns_name作為索引獲得Namespace對(duì)象并保存在sys_namespace變量中;再通過sysvar_name索引獲得Variable對(duì)象sys_variable.ValueTestConfiguration&TestUnit與自動(dòng)化測(cè)試1(這里僅介紹TestConfiguration配置,即與vTESTstudio軟件聯(lián)合使用的自)直接相關(guān)的就是TestConfigurationTestCOMObjectHierarchy中可以看到,它們的層級(jí)構(gòu)成為Application->Configuration->TestConfigurations->TestConfiguration->TestUnits->TestUnit:與TestUnitsTestConfiguration和TestUnit的集合,同樣可以通過索引訪問。除了可以使用相應(yīng)名稱作為索引以外,還能使用數(shù)字索引,但是切記索引起始為1。對(duì)于僅有一個(gè)TestConfiguration的情況,僅需要TestConfigurations(1)來獲得唯一的TestConfiguration當(dāng)CANoe工程中還沒有TestConfiguration或者TestUnit時(shí),就需要先添加。查看它們的接口定義:TestConfigurationvTESTstudio可以看到d(不需要其他參數(shù),即可添加并獲得新的TestConfiguration對(duì)象;而需要提供所要添加的TestUnit的絕對(duì)路徑,同樣可以獲得對(duì)應(yīng)的TestUnit的Add方法是在ITestUnits2接口上擴(kuò)展的,所以要通過前文所述的CastTo方法將ITestUnits)ITestUnits2下面請(qǐng)看加載測(cè)試配置的代碼示例:ITestUnits方法新添加一個(gè)TestConfiguration對(duì)象,并把它保存為類成員self.test_config;之后使用CastTo方法將新添加的TestConfiguration對(duì)象轉(zhuǎn)換成基于ITestUnits2TestUnits(默認(rèn)為ITestUnits接口最后使用轉(zhuǎn)換后的TestUnits對(duì)象的Addtest_unit_path路徑下的測(cè)試單元。ITestConfigurationStart方法:下面是執(zhí)行測(cè)試的代碼示例(這里使用了之前保存的類成員:執(zhí)行完測(cè)試后,需要獲得測(cè)試結(jié)果,可以通過CANoe軟件為TestConfiguration創(chuàng)建的系統(tǒng)變量VerdictSummary下面是獲得測(cè)試結(jié)果的代碼示例:這里get_test_result方法有一個(gè)帶有默認(rèn)值的參數(shù)test_config_name表示實(shí)際執(zhí)行測(cè)試的TestConfiguration名稱,它的默認(rèn)值是Test_Configuration_1,如果沒有修改過就不需要提供參數(shù),否則需要提供;get_test_result返回保存在VerdictSummary中的測(cè)試結(jié)果,其數(shù)據(jù)類型是整型,需要在接口定義中查詢具體數(shù)值對(duì)應(yīng)的結(jié)果:Testdemo聯(lián)合使用上述COM對(duì)象就能夠?qū)崿F(xiàn)自動(dòng)化測(cè)試,下面展示完整的代碼示例:基于Canoe類,就可以通過實(shí)例化Canoe類,調(diào)用實(shí)例對(duì)象的方法來實(shí)現(xiàn)自動(dòng)化測(cè)試,下面是簡(jiǎn)單的代碼示例:首先,實(shí)例化Canoe類,將實(shí)例化后的對(duì)象保存在canoe變量中;之后定義了canoePrj變量表示CANoe工程的絕對(duì)路徑,然后使用open_canoe_config方法打開此工程;接著定義testPrjload_test_config方法加載測(cè)start_canoe方法啟動(dòng)CANoe2srun_test_config10sget_test_result方法獲得的測(cè)試結(jié)果。這里使用了VectorCANoe14自帶的PythonBasicEmpty.cfgdemo工程作為測(cè)試工程,下面是關(guān)于此demo的介紹文檔:這個(gè)demo中有更豐富的COM對(duì)象的應(yīng)用、更完善的信息提示,比如對(duì)測(cè)試啟動(dòng)、停止等事件的控制,對(duì)CANoe運(yùn)行狀態(tài)的打

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論