周 敏 曹劍秋 許方平
(鎮(zhèn)江市計量所,鎮(zhèn)江 212000)
高阻箱檢定系統(tǒng)軟件早期版本是利用直接劃線制表的方法來生成檢定證書,在實際應(yīng)用過程中,各使用單位的證書格式經(jīng)常有變動,需要更改軟件并重新安裝,費時費力,效率低下。為克服這種缺點,經(jīng)多次探索,我們采用MFC[1]調(diào)用Word證書模板對象的方法自動生成檢定證書。當(dāng)證書格式有變動時,只需要變動證書模板,軟件不需要修改就能達到目的。
MFC(Microsoft Foundation Classes)是微軟公司提供的,用于在C++環(huán)境下編寫應(yīng)用程序的一個框架和引擎,能夠直接用它進行Word、Excel二次開發(fā)。用MFC和Word證書模板對象,可以在模板對象的“書簽”、表格位置插入任意文字和符號,使程序更加實用、靈活。在高阻箱檢定系統(tǒng)中,存儲在Access數(shù)據(jù)庫中的被檢儀器信息(如委托方、委托方地址、器具名稱、制造廠、型號/規(guī)格和器具編號等)和檢定結(jié)果數(shù)據(jù),通過MFC調(diào)用Access數(shù)據(jù)庫插入Word證書模板對象中,并保存為需要的檢定證書。
高阻箱是由高壓開關(guān)和精密電阻以一定的方式組合而成的,每個高壓開關(guān)上的系列電阻的串聯(lián)構(gòu)成高阻箱的一段阻值范圍,稱為檔位,對于某個具體的開關(guān),其上的每個電阻值構(gòu)成該檔位的某個點位。因目前市場上的高阻箱生產(chǎn)廠家眾多,具體型號和檔位、點位參數(shù)各不相同,所以,系統(tǒng)首先對被檢高阻箱型號設(shè)置檔位、點位信息和送檢單位信息;然后設(shè)置通信方式;最后就可以通過軟件檢定界面實時采集數(shù)據(jù)并存入數(shù)據(jù)庫。
對采集到的數(shù)據(jù),首先要根據(jù)檢定規(guī)程[2]判斷是否在允許的誤差范圍內(nèi),如果合格,則寫入數(shù)據(jù)庫,否則,做標(biāo)記后寫入數(shù)據(jù)庫,并且在操作界面上提示。最后,系統(tǒng)從數(shù)據(jù)庫中取出需要的數(shù)據(jù),調(diào)用Word證書模板對象,根據(jù)用戶的選擇,生成原始記錄、檢定證書或校準證書。
系統(tǒng)實時檢定界面如圖1所示,系統(tǒng)總體框圖如圖2所示。
圖1 實時檢定界面
圖2 系統(tǒng)總體框圖
當(dāng)從高阻箱檢定儀接收到實時數(shù)據(jù)后,軟件首先判斷數(shù)據(jù)是否在允許的誤差范圍內(nèi),然后作相應(yīng)的標(biāo)記存入數(shù)據(jù)庫。MFC調(diào)用數(shù)據(jù)庫的過程比較復(fù)雜,首先要導(dǎo)入相應(yīng)的動態(tài)鏈接庫,然后利用MFC生成的智能指針定義數(shù)據(jù)庫指針和記錄集指針,并在生成數(shù)據(jù)庫實例后打開數(shù)據(jù)源、生成記錄集實例,之后調(diào)用SQL語句[3],得到符合要求的記錄集合,最后關(guān)閉數(shù)據(jù)庫、釋放資源。
MFC調(diào)用數(shù)據(jù)庫有多種途徑[4],我們采用ADO技術(shù)。在使用ADO技術(shù)時,需要導(dǎo)入一個ADO動態(tài)鏈接庫msado15.dll,該動態(tài)鏈接庫位于系統(tǒng)盤下的“Program FilesCommon FilesSystemado”目錄下。所以需要打開工程文件,并展開“FileView”視圖中的“Header Files”節(jié)點,然后雙擊“StdAfx.h”文件,添加如下代碼:#import “c:Program FilesCommon FilesSystemadomsado15.dll” no_namespace rename(“EOF”,“adoEOF”)。
MFC調(diào)用數(shù)據(jù)庫流程圖如圖3。
圖3 MFC調(diào)用數(shù)據(jù)庫流程
在實際應(yīng)用中,我們希望應(yīng)用軟件能根據(jù)實時采集到的數(shù)據(jù)生成各種需要的證書,軟件使用者能方便的查看、修改和打印,在證書格式有改動時,能夠只修改證書模板而不去修改軟件就能實現(xiàn),利用MFC調(diào)用Word證書模板對象生成檢定證書的方法可以達到上述目的。
在MFC開始調(diào)用Word證書模板對象之前,我們需要導(dǎo)入目標(biāo)庫和制作Word證書模板。導(dǎo)入目標(biāo)庫的目的是為了利用Word的各種功能,制作Word證書模板是為軟件動態(tài)生成各種證書作格式準備。
一個類型庫是一個提供COM對象[5]功能信息的文件或文件的一部分,而且類型庫包含了有關(guān)類的信息。類型庫并不存儲實際的對象,而只是存儲有關(guān)這些對象的信息。類型庫詳細說明了一個自動化客戶機[6]需要調(diào)用的方法和屬性的信息。
每一個Microsoft Office應(yīng)用程序都在一個dll文件中提供了多種類型庫資源,這個dll文件叫做目標(biāo)庫(*.olb)。因此,在MFC調(diào)用Word證書模板對象前,需要導(dǎo)入msword.olb才能使用Word中的各種功能。
首先要打開Microsoft Word新建一個空白文檔,然后根據(jù)各種證書的具體要求設(shè)計相應(yīng)的格式,并在需要填寫數(shù)據(jù)且有長度限制的地方繪制表格,在沒有長度限制的地方設(shè)置標(biāo)簽,最后以“.dot”為擴展名保存在相應(yīng)的應(yīng)用程序目錄下。
首先利用微軟公司提供的Visual Studio集成開發(fā)環(huán)境生成MFC應(yīng)用程序框架并設(shè)置為Automation,使之成為自動化客戶機,創(chuàng)建Word服務(wù)器并將符合條件的數(shù)據(jù)寫入Word證書模板對象的表格和標(biāo)簽處,保存為相應(yīng)的證書,最后關(guān)閉Word服務(wù)器并釋放資源。
調(diào)用過程流程如圖4所示:
圖4 MFC調(diào)用Word流程圖
為了避免查看證書時再重復(fù)生成證書的問題,可以首先查找該證書是否存在,如果存在,則直接調(diào)用并顯示;如果不存在,則從數(shù)據(jù)庫中查找符合條件的數(shù)據(jù)并生成證書。
軟件獲取的數(shù)據(jù)是高阻箱檢定儀通過串口實時傳送過來的?;贛FC的軟件一般是通過Microsoft Communications Control[7]控件獲取串口實時數(shù)據(jù)的,這就需要在制作軟件安裝程序[8]時必須包含MSCOMM32.OCX控件,并設(shè)置為自注冊屬性,否則,會出現(xiàn)軟件獲取數(shù)據(jù)的檢定界面不顯示的錯誤。
通過軟件自動采集數(shù)據(jù)并生成證書,提高了工作效率,同時證書格式采用Word模板對象的形式,提高了靈活性,目前有多家計量系統(tǒng)和電力系統(tǒng)的用戶在實際使用這一版本的軟件,獲得了良好的效果和較好的評價。
[1] 侯俊杰.深入淺出MFC.湖北:華中科技大學(xué)出版社,2001
[2] JJG 1072—2011 《直流高壓高值電阻器檢定規(guī)程》.2011
[3] 王向云.SQL從入門到精通.北京:電子工業(yè)出版社,2009
[4] 劉刀桂,孟繁晶.Visual C++ 實踐與提高-數(shù)據(jù)庫篇.北京:中國鐵道出版社,2001
[5] DaleRogerson.COM技術(shù)內(nèi)幕-微軟組件對象模型.北京:清華大學(xué)出版社,1999
[6] 余英,梁剛,等.Visual C++ 實踐與提高-COM和COM+篇.北京:中國鐵道出版社,2001
[7] 劉書智.Visual C++ 串口通信與工程實踐.北京:中國鐵道出版社,2011
[8] 張銘.精通InstallShield 6.北京:清華大學(xué)出版社,2001