專利名稱:一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種Windows平臺下的軟件實(shí)現(xiàn)方法,具體涉及一種采用聯(lián)合編程處 理外部數(shù)據(jù)的方法。
背景技術(shù):
目前計(jì)算機(jī)程序調(diào)用外部數(shù)據(jù)的方法主要有手動輸入數(shù)據(jù)和建立數(shù)據(jù)庫,然后通 過編寫相關(guān)程序?qū)?shù)據(jù)庫進(jìn)行調(diào)用等方法實(shí)現(xiàn),當(dāng)外部數(shù)據(jù)龐大且經(jīng)常變化時(shí),不但使手 動輸入或者建立數(shù)據(jù)庫變得相當(dāng)麻煩,而且需要大量更改內(nèi)部程序,加大了程序員的工作 量,不利于程序的擴(kuò)展升級。當(dāng)計(jì)算過程涉及到復(fù)雜的數(shù)值計(jì)算時(shí),會使得很多高級語言的編程費(fèi)時(shí)費(fèi)力程 序代碼復(fù)雜,應(yīng)用程序的開發(fā)周期長。MATLAB語言雖然具有強(qiáng)大的計(jì)算功能,但其制作的應(yīng) 用程序界面操作性較差,對用戶要求較高。當(dāng)生成數(shù)據(jù)用報(bào)表形式輸出時(shí),操作起來很麻煩,不能讓用戶對生成的報(bào)表進(jìn)行 改動,而且一旦報(bào)表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來很大的 不便。
發(fā)明內(nèi)容
為克服現(xiàn)有技術(shù)中存在的外部數(shù)據(jù)調(diào)用困難,程序代碼復(fù)雜,應(yīng)用程序開發(fā)周期 長,以及輸出報(bào)表操作麻煩等不足,本發(fā)明提供一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法。本發(fā)明為了解決上述技術(shù)問題采用的技術(shù)方案是提供一種采用聯(lián)合編程處理外 部數(shù)據(jù)的方法,包括以下步驟手動輸入數(shù)據(jù)或通過VB調(diào)用Excel實(shí)現(xiàn)外部數(shù)據(jù)的自動輸 入;用VB制作人機(jī)交互界面,編寫VB源程序,使在VB中可以接收手動輸入或自動輸入的數(shù) 據(jù)并進(jìn)行存儲;使用接口函數(shù)將VB中存儲的數(shù)據(jù)輸入至MATLAB中;編寫MATLAB程序,進(jìn) 行相關(guān)數(shù)值運(yùn)算或繪制所需圖像;使用接口函數(shù)實(shí)現(xiàn)將MATLAB中生成的信息輸出至VB中; 將VB中接收的數(shù)據(jù)生成Excel報(bào)表。其中,所述的采用聯(lián)合編程處理外部數(shù)據(jù)的方法將Excel作為VB的一個(gè)外部對 象進(jìn)行引用,并通過ActiveX技術(shù)實(shí)現(xiàn)VB與MATLAB的無縫連接;用VB作為自動化控制器, 用MATLAB作為自動化服務(wù)器,并通過ActiveX技術(shù)實(shí)現(xiàn)VB與MATLAB的無縫連接。本發(fā)明的優(yōu)點(diǎn)在于基于VB、MATLAB和ExcelL聯(lián)合編程,由于各取其長,在簡化數(shù) 據(jù)調(diào)用、程序代碼編寫和報(bào)表輸出的同時(shí),降低了開發(fā)難度,縮短了編程時(shí)間,緊湊了程序 結(jié)構(gòu),便于維護(hù)測試和程序的擴(kuò)展升級。
圖1為本發(fā)明一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法的邏輯流程圖;圖2為本發(fā)明一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法中VB調(diào)用Excel —系列操 作的過程圖3為主匯流排處短路Gl發(fā)電機(jī)饋送的短路電流曲線圖;圖4為主匯流排處短路G2發(fā)電機(jī)饋送的短路電流曲線圖;圖5為主匯流排處短路G3發(fā)電機(jī)饋送的短路電流曲線圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式
做進(jìn)一步的說明和闡述1.技術(shù)介紹(I)VB和Excel間的數(shù)據(jù)流通
本發(fā)明利用ActiveX技術(shù)實(shí)現(xiàn)VB與Excel的無縫鏈接。本發(fā)明中VB和Excel間的數(shù)據(jù)流通包括外部數(shù)據(jù)從Excel中調(diào)入VB和將VB中 的數(shù)據(jù)調(diào)出至Excel。本發(fā)明中外部數(shù)據(jù)的輸入有手動輸入和自動輸入兩種,其中手動輸入主要用于程 序的維護(hù)測試,自動輸入由VB調(diào)用指定路徑的Excel實(shí)現(xiàn)。本發(fā)明中將VB中的數(shù)據(jù)調(diào)出至Excel由VB調(diào)用指定路徑的Excel實(shí)現(xiàn)。本發(fā)明中VB調(diào)用Excel具體方法就是使用VB的ActiveX部件,獲取對Excel進(jìn) 行操作的控制句柄,直接控制Excel的一系列操作,其過程如圖2所示。要實(shí)現(xiàn)VB對Excel的調(diào)用,應(yīng)在VB中選擇工程一引用命令,在彈出的“引 用”對話框中選擇“Microsoft Excel XX. X ObjectLibrary”復(fù)選框,其中XX. X為計(jì)算機(jī)上 所安裝的Excel版本號,本實(shí)施例中為11.0。本發(fā)明中,將Excel中的外部數(shù)據(jù)按照在Excel中的順序存放在VB定義的數(shù)組當(dāng) 中,以方便數(shù)據(jù)的自動調(diào)入;在制作Excel報(bào)表時(shí),可依據(jù)輸出內(nèi)容先在Excel中將報(bào)表格 式制作完畢,當(dāng)調(diào)出數(shù)據(jù)寫入Excel報(bào)表后,就完成了報(bào)表的輸出。因?yàn)镋xcel報(bào)表格式可 以在Excel界面上獨(dú)立設(shè)置,因此大大簡化了報(bào)表的制作和修改,此項(xiàng)功能在輸出復(fù)雜、多 頁報(bào)表時(shí)優(yōu)點(diǎn)尤為突出。這里需要說明的是使用的計(jì)算機(jī)上必須裝有Excel軟件。(2) VB和MATLAB間的信息流通本發(fā)明利用ActiveX技術(shù)實(shí)現(xiàn)VB與MATLAB的無縫鏈接。本發(fā)明中VB和MATLAB間的信息流通包括VB向MATLAB傳送數(shù)據(jù)以及VB從MATLAB 的工作空間中獲取數(shù)據(jù)。MATLAB對ActiveX技術(shù)提供支持,可通過ActiveX技術(shù)與其它應(yīng)用程序進(jìn)行信息 交換,完成數(shù)據(jù)通信。MATLAB提供了一個(gè)自動化對象MATLAB. Application,它支持COM技 術(shù),而其它程序通過COM技術(shù)提供的函數(shù)得到自動化對象支持的接口指針,通過調(diào)用接口 函數(shù)便可控制和使用自動化對象了。VB支持ActiveX自動控制端協(xié)議,MATLAB支持ActiveX 自動化服務(wù)器端協(xié)議,所以VB通過ActiveX技術(shù)可以調(diào)用MATLAB,從而實(shí)現(xiàn)VB與MATLAB 的無縫鏈接。在本發(fā)明中,VB作為自動化控制器,MATLAB作為自動化服務(wù)器。通過使用MATLAB 自動化服務(wù)器功能,就可以在VB程序中執(zhí)行MATLAB命令,并向MATLAB傳送數(shù)據(jù)以及從 MATLAB的工作空間中獲取數(shù)據(jù)。在調(diào)用MATLAB自動化服務(wù)器功能時(shí),VB必須指定服務(wù)器ProgramID。本發(fā)明中指定Program ID為MATLAB. Application,其含義為MATLAB自動化服務(wù)器作為一個(gè)共享的服
務(wù)器使用。 本發(fā)明中,通過Execute函數(shù)調(diào)用MATIAB來執(zhí)行一條MATLAB命令,同時(shí)返回一個(gè) 字符串表示命令的執(zhí)行情況,實(shí)現(xiàn)MATLAB自動化服務(wù)器功能。通過以上操作,就可以通過ActiveX自動化接口將MATLAB作為VB的一個(gè)ActiveX 部件進(jìn)行調(diào)用,從而實(shí)現(xiàn)VB和MATLAB間的信息流通。
這里需要說明的是使用的計(jì)算機(jī)上必須裝有MATLAB軟件。2.具體實(shí)施例下面采用基于本發(fā)明設(shè)計(jì)的“船舶交流電力系統(tǒng)短路電流計(jì)算軟件”對中國船級 社《鋼制海船入級規(guī)范》(2006)第四篇“電氣裝置”附錄1中附錄A的計(jì)算實(shí)例進(jìn)行計(jì)算, 從而驗(yàn)證計(jì)算數(shù)據(jù)的精確度,同時(shí)結(jié)合附圖,演示基于本發(fā)明生成的短路電流曲線的效果。計(jì)算所需參數(shù)如表1、2和3所示表1發(fā)電機(jī)參數(shù) 表2電力變壓器參數(shù) 表3電動機(jī)參數(shù) 因?yàn)樾枰?jì)算的項(xiàng)目很多,在此以“主匯流排處短路發(fā)電機(jī)饋送的短路電流計(jì)算,, 為例,以便對技術(shù)效果進(jìn)行演示和說明。
手動輸入或者自動調(diào)入計(jì)算參數(shù)后,經(jīng)計(jì)算將計(jì)算結(jié)果顯示在VB界面中并輸出 Excel報(bào)表和“短路電流_時(shí)間”曲線,表4為基于本發(fā)明的計(jì)算結(jié)果與中國船級社《鋼制 海船入級規(guī)范》(2006)第四篇“電氣裝置”附錄1中附錄A的計(jì)算實(shí)例的結(jié)果比較表 4 從表4中手算結(jié)果、船級社給出的計(jì)算結(jié)果和基于本發(fā)明的計(jì)算結(jié)果三種數(shù)據(jù)的 對比中可以看出,本發(fā)明計(jì)算數(shù)據(jù)小數(shù)點(diǎn)后保留四位有效數(shù)字,若將其修改為三位有效數(shù) 字,則計(jì)算結(jié)果一致,因此基于本發(fā)明的計(jì)算是非常準(zhǔn)確的。另外,基于本發(fā)明還可根據(jù)以上計(jì)算結(jié)果輸出短路電流曲線圖,如圖3、圖4和圖5 所示。以上內(nèi)容是結(jié)合具體的實(shí)例對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的 具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本 發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法,其特征在于,所述采用聯(lián)合編程處理外部數(shù)據(jù)的方法包括以下步驟手動輸入數(shù)據(jù)或通過VB調(diào)用Excel實(shí)現(xiàn)外部數(shù)據(jù)的自動輸入;用VB制作人機(jī)交互界面,編寫VB源程序,使在VB中可以接收手動輸入或自動輸入的數(shù)據(jù)并進(jìn)行存儲;使用接口函數(shù)將VB中存儲的數(shù)據(jù)輸入至MATLAB中;編寫MATLAB程序,進(jìn)行相關(guān)數(shù)值運(yùn)算或繪制所需圖像;使用接口函數(shù)實(shí)現(xiàn)將MATLAB中生成的信息輸出至VB中;將VB中接收的數(shù)據(jù)生成Excel報(bào)表。
2.根據(jù)權(quán)利要求1所述的一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法,其特征在于所述 的采用聯(lián)合編程處理外部數(shù)據(jù)的方法將Excel作為VB的一個(gè)外部對象進(jìn)行引用,并通過 ActiveX技術(shù)實(shí)現(xiàn)VB與MATLAB的無縫連接。
3.根據(jù)權(quán)利要求1所述的一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法,其特征在于所述 的采用聯(lián)合編程處理外部數(shù)據(jù)的方法用VB作為自動化控制器,用MATLAB作為自動化服務(wù) 器,并通過ActiveX技術(shù)實(shí)現(xiàn)VB與MATLAB的無縫連接。
4.根據(jù)權(quán)利要求1所述的一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法,其特征在于所述 的采用聯(lián)合編程處理外部數(shù)據(jù)的方法將Excel作為輸出報(bào)表。
全文摘要
本發(fā)明公開了一種采用聯(lián)合編程處理外部數(shù)據(jù)的方法。所述采用聯(lián)合編程處理外部數(shù)據(jù)的方法,包括以下步驟手動輸入數(shù)據(jù)或通過VB調(diào)用Excel實(shí)現(xiàn)外部數(shù)據(jù)的自動輸入;用VB制作人機(jī)交互界面,編寫VB源程序;使用接口函數(shù)將VB中存儲的數(shù)據(jù)輸入至MATLAB中;編寫MATLAB程序,進(jìn)行數(shù)值運(yùn)算或繪制圖像;使用接口函數(shù)將MATLAB中生成的信息輸出至VB中;將VB中接收的數(shù)據(jù)生成Excel報(bào)表。本發(fā)明不僅簡化了數(shù)據(jù)庫制作、程序代碼編寫和報(bào)表的輸出,降低了開發(fā)難度,縮短了編程時(shí)間,便于維護(hù)升級,而且還具有輸出圖像的功能。
文檔編號G06F9/44GK101840336SQ20101016163
公開日2010年9月22日 申請日期2010年4月30日 優(yōu)先權(quán)日2010年4月30日
發(fā)明者張春來, 王浩亮, 趙殿禮 申請人:大連海事大學(xué)