專利名稱:自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法
技術領域:
本發(fā)明涉及自動測試領域,尤其是一種自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法。
于是,就提出了一種程序指令標準命令SCPI,該標準命令是從程控儀器器件消息的角度出發(fā)來進行標準化的,或者說它是從命令內(nèi)容的角度來進行規(guī)范化的,而在儀器程序驅動模塊接口的角度則沒有做規(guī)范。這樣,該命令雖然從一定程度上規(guī)范了儀器命令的格式與內(nèi)容,簡化了儀器編程的復雜度,但是由于各生產(chǎn)廠家生產(chǎn)的儀器在編程方式上有很大的不同,依然難以達到儀器互換的目的。
我們把測試系統(tǒng)的結構分為測試程序(或叫測試代碼)、儀器驅動或產(chǎn)品驅動、儀器或產(chǎn)品三個層次,如
圖1所示。其中產(chǎn)品本身可以看作是一臺儀器,因此我們可以把這三個層次叫做測試程序、儀器驅動和儀器。為了達到儀器之間的互換,就必然要達到儀器驅動實現(xiàn)互換,因為儀器驅動與儀器本身是緊密相連的,可以看作是一體。當我們將具體的儀器及其驅動更換后,不需要修改或者重新編譯測試代碼,系統(tǒng)就可以完成預定的功能。只有在這種情況下,當儀器升級或者采購其他廠家的儀器以后,我們可以非常輕松地構造我們所需要的測試系統(tǒng),而不要開發(fā)人員重新從頭到尾編寫、調(diào)試代碼。
為達到上述目的,本發(fā)明的解決方案是一種自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,在一個具有測試程序、儀器驅動、儀器的自動測試系統(tǒng)中,a、將測試程序分為兩個層次完成基本的用戶界面及整體結構的測試程序框架層、和儀器驅動進行通信的測試命令序列層;將儀器驅動分為兩個層次提供和測試程序的測試代碼通信的儀器上層驅動部分、提供和儀器通信的儀器下層驅動部分;b、定義在測試命令序列層和儀器上層驅動部分之間的基本儀器接口,將儀器驅動所提供的各種功能放在基本儀器接口中,并設立接口指針;c、測試程序裝載儀器驅動模塊,得到基本儀器接口的接口指針,按該接口指針訪問基本儀器接口,實現(xiàn)儀器驅動的功能。
在步驟b中,將能產(chǎn)生儀器驅動的初始化、自檢、關閉、獲取系統(tǒng)當前狀態(tài)和最近錯誤信息的基本驅動操作的命令放在該基本儀器接口中。并可以在基本儀器接口中設置同步調(diào)用函數(shù),將測試程序與儀器驅動之間進行通信需要用到的操作命令放在該同步調(diào)用函數(shù)中。
在步驟b中,我們還可以以定義好的基本儀器接口為基礎,加進具體測試操作命令,在儀器驅動模塊的上層驅動部分定義抽象儀器接口。
在步驟b中,定義基本儀器接口和抽象儀器接口是采用.H文件的文件形式來定義。
在本發(fā)明中,在步驟c前,可以將儀器驅動模塊放在動態(tài)連接庫里;在步驟c中,裝載儀器驅動模塊是從動態(tài)連接庫中取出儀器驅動模塊進行裝載。
在步驟c中,測試程序是通過微軟的裝載庫函數(shù)來裝載儀器驅動模塊的。
我們在本發(fā)明的步驟c前,可以定義一個創(chuàng)建項目模塊,它能創(chuàng)建所需要的儀器驅動實例,并返回一個基本儀器接口的接口指針;在步驟c中,測試程序裝載儀器驅動模塊之后,調(diào)用該創(chuàng)建項目模塊,得到基本儀器接口的接口指針。
由于本發(fā)明利用了分層的思想,將儀器驅動分為上層驅動模塊和下層驅動模塊的層次結構,并定義了基本儀器接口和根據(jù)具體儀器功能在上面進一步定義的功能接口,測試命令序列只需要該接口文件,就可以完成編碼工作,這樣,儀器上層驅動部分不發(fā)生變化,當儀器更換時,測試代碼不需要修改就可以完成正常工作,實現(xiàn)了儀器驅動的互換,使得將具體的儀器及其驅動更換后,不需要修改或者重新編譯測試代碼,系統(tǒng)就可以完成預定的功能。
另外,由于本發(fā)明是將儀器驅動模塊放在動態(tài)連接庫里,測試程序通過微軟Microsoft的裝載庫LoadLibrary函數(shù)直接來從動態(tài)連接庫中裝載儀器驅動模塊,省去了查找注冊表尋找模塊的過程,大大提高軟件的運行速度,編碼簡單,不需理解很多復雜的協(xié)議。
由于本發(fā)明的基本儀器接口以及在此基礎上擴充的功能接口是自定義的,它的實現(xiàn)過程不依賴于微軟Microsoft的機制,因此提高了適用的普遍性,有利于進行擴充和發(fā)展。
圖2是本發(fā)明的方法流程圖。
圖3是本發(fā)明的測試系統(tǒng)結構分層示意圖。
(1)將測試程序分為兩個層次完成基本的用戶界面及整體結構的測試程序框架層、和儀器驅動進行通信的測試命令序列層;將儀器驅動分為兩個層次提供和測試程序的測試代碼通信的儀器上層驅動部分、提供和儀器通信的儀器下層驅動部分。
關于這一部分可以在圖3中清楚地看到。圖3的上部是測試程序,這在我們背景技術的介紹中已經(jīng)介紹得比較清楚了。它分成兩個部分一部分是測試程序框架,完成基本的用戶界面及整體結構,并且基本上不發(fā)生變化;另一部分是測試命令序列,該部分主要用來和各種測試儀器進行通信,下發(fā)測試命令,接收儀器返回來的結果,并對結果進行分析。測試程序的開發(fā)基本上就是測試命令序列的開發(fā)。測試程序框架可以認為是程序開發(fā)的項層的開發(fā),測試命令序列的開發(fā)則是具體的開發(fā)。
圖3的中部是儀器驅動,它可以進一步劃分成兩個部分一部分是提供和測試代碼通信的儀器上層驅動部分;一部分是提供和具體儀器通信的儀器下層驅動部分。我們對儀器驅動作這樣的層次劃分后,就會發(fā)現(xiàn),只要儀器上層驅動部分不發(fā)生變化,就可以保證當儀器更換時,測試代碼不需要修改就可以完成正常工作,實現(xiàn)即插即用。
我們在開頭已經(jīng)提過,測試裝備由工控機、各種測試儀器以及被測物組成。關于這一部分的測試程序和儀器驅動,以及它們各自的兩個層次,實際上都是在工控機內(nèi)部的軟件處理的層次,不是一個真正的物理實體。我們采用這種分層的處理方法,是實現(xiàn)本發(fā)明目的的第一步。
(2)在上面的敘述中我們已經(jīng)提過,只要儀器上層驅動部分不發(fā)生變化,就可以保證當儀器更換時,測試代碼不需要修改就可以完成正常工作,實現(xiàn)即插即用。那么,如何保證儀器上層驅動部分不發(fā)生變化呢?我們在測試命令序列層和儀器上層驅動部分之間定義一個基本儀器接口IDevice,將儀器驅動所提供的各種功能放在基本儀器接口IDevice中,并設立接口指針。測試命令序列層調(diào)用儀器上層驅動部分都是通過該接口及在其基礎上的其他功能接口進行的。通過這些接口,測試命令序列只需要儀器驅動模塊所定義的各接口文件,通過該接口文件,就可以完成編碼工作,測試命令序列與儀器驅動模塊在運行時刻綁定,在不調(diào)用儀器驅動的時候,測試命令序列和儀器驅動是獨立的,儀器驅動的變化不會給測試命令序列的測試命令造成影響,從而實現(xiàn)儀器驅動模塊的即插即用。
如何定義基本儀器接口IDevice呢?將能產(chǎn)生儀器驅動的初始化、自檢、關閉、獲取系統(tǒng)當前狀態(tài)和最近錯誤信息的基本驅動操作的命令放在該基本儀器接口IDevice中。還可以在該基本儀器接口IDevice中設置同步調(diào)用函數(shù),將測試程序與儀器驅動之間進行通信需要用到的操作命令放在該同步調(diào)用函數(shù)中。
現(xiàn)在舉一個例子。
我們通過這樣的過程定義一個基本儀器接口Idevice首先初始化模塊,提供系統(tǒng)所需要的一些初始化參數(shù);然后模塊開始工作;使模塊進行自檢,檢查模塊本身是否出現(xiàn)故障;
復位,上述過程其實與計算機的開機過程是十分類似的;模塊停止工作;卸載模塊程序;獲取模塊的名稱;獲取模塊的描述信息;獲取模塊的版本信息;判斷是否在線;獲取系統(tǒng)當前狀態(tài),0表示該設備壞;1表示該設備正常;其他用戶可以自己定義;獲取最近的錯誤信息,這一條和上一條是我們自動測試系統(tǒng)進行自動測試的關鍵;如果有子模塊,獲取子模塊的個數(shù)。在模塊中可以設置一些子模塊,對于每個子模塊的調(diào)用,其實也要遵循與母模塊同樣的過程;獲取某子模塊的接口。
在本接口中設置了同步調(diào)用函數(shù)1)讀函數(shù),包括接收緩沖區(qū)指針;欲讀取的字節(jié)數(shù);實際讀取的字節(jié)數(shù)指針;同步讀。
2)寫函數(shù),包括發(fā)送緩沖區(qū);欲發(fā)送的字節(jié)數(shù);實際發(fā)送的字節(jié)數(shù)指針;同步寫。
3)安裝回調(diào)函數(shù)的函數(shù),包括設置事件代碼ID;發(fā)生事件后,事件處理回調(diào)函數(shù);安裝回調(diào)函數(shù)。
4)卸載回調(diào)函數(shù)的函數(shù),包括設置事件代碼ID;發(fā)生事件后,事件處理回調(diào)函數(shù);卸載回調(diào)函數(shù)。
當然,在實際過程中,上述過程都是以源代碼的形式進行的。我們可以仿照上述過程進行設置。
我們還可以以定義好的基本儀器接口IDevice為基礎,加進具體測試操作命令,在儀器驅動模塊的上層驅動部分定義抽象儀器接口。比如說我們可以定義SDH測試儀接口(例如傳輸設備ISdh接口),可以在該接口定義“抖動測試”、“誤碼測試”等具體測試操作命令,由于這些功能是SDH測試儀都擁有的功能,所以通過該接口,就可以操作所有的SDH測試儀。當SDH測試儀升級增加了新的測試功能,則可以再定義測試儀接口(例如傳輸設備ISdh2接口),對于新的SDH測試儀的驅動模塊,不但要實現(xiàn)傳輸設備ISdh接口,以便支持以前定義的功能,還要實現(xiàn)傳輸設備ISdh2接口,用來支持測試儀新增加的功能。這樣,用新的測試儀就可以非常平滑地用于以前使用舊測試儀所開發(fā)的測試系統(tǒng)。
基本儀器接口IDevice和抽象儀器接口的接口定義是采用Microsoft定義的格式,接口定義文件采用.H文件的形式。
(3)測試程序裝載儀器驅動模塊,得到基本儀器接口IDevice的接口指針,按該接口指針訪問基本儀器接口IDevice,實現(xiàn)儀器驅動的功能。
在此步驟前,可以將儀器驅動模塊放在動態(tài)連接庫DLL里,在微軟的體系中,儀器驅動軟件模塊是既可以放在動態(tài)連接庫中作為文本文件執(zhí)行,也可以作為帶有.exe的可執(zhí)行文件執(zhí)行的,結果造成程序執(zhí)行的速度下降,在動態(tài)連接庫中程序的執(zhí)行是相對比較快的。在本步驟執(zhí)行時,裝載儀器驅動模塊是從動態(tài)連接庫DLL中取出儀器驅動模塊進行裝載。
測試程序是通過微軟Microsoft的裝載庫LoadLibrary函數(shù)來裝載儀器驅動模塊的。它沒有象微軟那樣,通過查找注冊表進行一個漫長過程的查找來進行,極大地節(jié)省了本發(fā)明的執(zhí)行時間,提高了本發(fā)明的效率。關于裝載庫LoadLibrary函數(shù)部分,是微軟的一個通用函數(shù),本領域技術人員非常清楚。
在本步驟執(zhí)行前,可以定義一個創(chuàng)建項目CreateObject模塊,它能創(chuàng)建所需要的儀器驅動實例,并返回一個基本儀器接口IDevice的接口指針;在本步驟中,測試程序裝載儀器驅動模塊之后,調(diào)用該創(chuàng)建項目模塊,得到基本儀器接口IDevice的接口指針。該創(chuàng)建項目模塊的功能就是為測試程序的測試命令找到一個合適的儀器驅動實例,對本領域技術人員來說很容易編程操作。在具體調(diào)用儀器驅動模塊時,可以通過一定的技術處理,在測試命令序列上指明需要的儀器類型,比如ATM測試儀,然后由測試程序框架根據(jù)當前所安裝的儀器種類,決定裝載最合適的儀器驅動模塊,并取得該儀器驅動模塊的基本儀器接口IDevice,將之返回給測試命令序列模塊使用。
儀器驅動模塊的下層驅動部分實際上就是一個儀器適配器,隨儀器的不同而不同;上層驅動部分則根據(jù)不同的功能進行規(guī)定。這樣在實際應用中,測試程序所處理的只是象ATM測試儀等抽象的儀器設備驅動,測試程序下發(fā)的命令通過下層驅動接口,轉換成特定儀器所能識別的命令。通過這樣的分層結構,就可以處理儀器之間的互換問題。
權利要求
1.一種自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,在一個具有測試程序、儀器驅動、儀器的自動測試系統(tǒng)中,a、將測試程序分為兩個層次完成基本的用戶界面及整體結構的測試程序框架層、和儀器驅動進行通信的測試命令序列層;將儀器驅動分為兩個層次提供和測試程序的測試代碼通信的儀器上層驅動部分、提供和儀器通信的儀器下層驅動部分;b、定義在測試命令序列層和儀器上層驅動部分之間的基本儀器接口(IDevice),將儀器驅動所提供的各種功能放在基本儀器接口(IDevice)中,并設立接口指針;c、測試程序裝載儀器驅動模塊,得到基本儀器接口(IDevice)的接口指針,按該接口指針訪問基本儀器接口(IDevice),實現(xiàn)儀器驅動的功能。
2.根據(jù)權利要求1所述的自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,其特征在于在步驟b中,將能產(chǎn)生儀器驅動的初始化、自檢、關閉、獲取系統(tǒng)當前狀態(tài)和最近錯誤信息的基本驅動操作的命令放在該基本儀器接口(IDevice)中。
3.根據(jù)權利要求1或2所述的自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,其特征在于在步驟b中,在基本儀器接口(IDevice)中設置同步調(diào)用函數(shù),將測試程序與儀器驅動之間進行通信需要用到的操作命令放在該同步調(diào)用函數(shù)中。
4.根據(jù)權利要求3所述的自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,其特征在于在步驟b中,以定義好的基本儀器接口(IDevice)為基礎,加進具體測試操作命令,在儀器驅動模塊的上層驅動部分定義抽象儀器接口。
5.根據(jù)權利要求4所述的自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,其特征在于在步驟b中,定義基本儀器接口(IDevice)和抽象儀器接口是采用.H文件的文件形式來定義。
6.根據(jù)權利要求1所述的自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,其特征在于在步驟c前,將儀器驅動模塊放在動態(tài)連接庫(DLL)里;在步驟c中,裝載儀器驅動模塊是從動態(tài)連接庫(DLL)中取出儀器驅動模塊進行裝載。
7.根據(jù)權利要求1或6所述的自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,其特征在于在步驟c中,測試程序是通過微軟(Microsoft)的裝載庫(LoadLibrary)函數(shù)來裝載儀器驅動模塊的。
8.根據(jù)權利要求1或6所述的自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,其特征在于在步驟c前,定義一個創(chuàng)建項目(CreateObject)模塊,它能創(chuàng)建所需要的儀器驅動實例,并返回一個基本儀器接口(IDevice)的接口指針;在步驟c中,測試程序裝載儀器驅動模塊之后,調(diào)用該創(chuàng)建項目(CreateObject)模塊,得到基本儀器接口(IDevice)的接口指針。
全文摘要
一種自動測試系統(tǒng)的儀器模塊驅動實現(xiàn)方法,將測試程序分為兩個層次測試程序框架層、測試命令序列層,將儀器驅動分為兩個層次儀器上層驅動部分、儀器下層驅動部分;定義基本儀器接口,將儀器驅動所提供的各種功能放在基本儀器接口中,并設立接口指針;測試程序裝載儀器驅動模塊,得到基本儀器接口的接口指針,按該接口指針訪問基本儀器接口,實現(xiàn)儀器驅動的功能。它能夠實現(xiàn)儀器驅動的互換,使得將具體的儀器及其驅動更換后,不需要修改或者重新編譯測試代碼,系統(tǒng)就可以完成預定的功能。
文檔編號G06F11/36GK1402132SQ0113260
公開日2003年3月12日 申請日期2001年8月28日 優(yōu)先權日2001年8月28日
發(fā)明者劉進 申請人:華為技術有限公司