周顧庭 張春 單曉明



摘要:本文對FADEC系統(tǒng)軟件的參數(shù)一致性進行了研究。通過分析現(xiàn)有參數(shù)處理方式,本文提出將輸入文檔中的表格作為唯一的來源,利用EXCEL/VBA提取文檔中的表格數(shù)據(jù),寫入代碼或可調參數(shù)文件中。通過該種方法能夠保證代碼中數(shù)據(jù)與要求一致,同時保證可調參數(shù)的初始值與代碼中的默認值一致。
關鍵詞:FADEC;參數(shù);一致性;word;Excel
1引言
在FADEC軟件開發(fā)過程中,一般需要將文檔中的大量的數(shù)據(jù)寫入軟件代碼中,有些數(shù)據(jù)僅在代碼中體現(xiàn),有的數(shù)據(jù)需要設置為可調參數(shù),可調參數(shù)一般調節(jié)規(guī)律、控制參數(shù)、標定曲線等系統(tǒng)匹配曲線[1],如何高效且準確的保證所使用參數(shù)與要求參數(shù)一致性及其可維護性是在軟件開發(fā)過程中亟需解決的問題,而VBA(Visual Basic for Application)是一種由Visual Basic的一種宏語言[2][3],主要用于擴展Windows的應用程序功能,特別是Microsoft Office軟件,本文提出了基于EXCEL的VBA進行處理的方法。
2問題分析及設計思路
按照軟件開發(fā)流程,在新研階段就應該考慮全面,規(guī)定統(tǒng)一的軟件架構,制定文檔中數(shù)據(jù)編寫的規(guī)則:可調還是不可調,連續(xù)還是離散點,可調的格式,數(shù)據(jù)的名稱等,做成可調參數(shù)的形式等,確保數(shù)據(jù)的來源唯一且準確,然后將需求文檔中的需要寫入代碼中的數(shù)據(jù)按照制定好的格式編寫,前期要做好規(guī)則制定及數(shù)據(jù)的分類整理等大部分策劃工作,保證需求文檔中的數(shù)據(jù)是代碼及可調參數(shù)相關文件的來源,以此來保證數(shù)據(jù)的正確性。這個在前期的進行合理的規(guī)劃后,能夠保持數(shù)據(jù)源的一致性,后續(xù)維護中也按照規(guī)則執(zhí)行。
而一旦未規(guī)定好統(tǒng)一的框架結構進行處理,進入維護階段后,若大量的變更數(shù)據(jù)表格,則應該參考新研階段,統(tǒng)一規(guī)劃結構,制定規(guī)則后,統(tǒng)一按規(guī)則執(zhí)行,若是僅有少量變更,則可以統(tǒng)計一下文檔中表格的類型,然后進行相應的處理。
本文基于EXCEL/VBA開發(fā)工具,能夠讀取輸入文件中的參數(shù)曲線,參考現(xiàn)有維護階段代碼及可調參數(shù)暫定義一種代碼及可調參數(shù)格式,生成可直接使用的代碼及可調參數(shù)文件,同時,也可以對現(xiàn)有的參數(shù)進行校對。參數(shù)曲線分為一維、二維和三維,已分別有對應表格區(qū)分曲線,同時寫明檢測范圍,處理流程如下:
輸入:word文件(包含固定格式的默認參數(shù)曲線及其檢測表格)
輸出:代碼(包括默認值及檢測范圍)及可調整參數(shù)文件
處理點:讀取word中表格到excel中,區(qū)分表格的類型,留下表格中的數(shù)值(刪除其單位等非數(shù)值信息),輸出到文件中。
3用VBA開發(fā)數(shù)據(jù)生成工具的實例
3.1 輸入輸出說明
以三種表各有一張為例,輸入輸出如以下格式所示:
1)輸入數(shù)據(jù)表格,包括一維表格、二維表格以及三維表格,必要元素包括表號和表格內容,用于默認值的生成格式如圖2、圖3和圖4所示。
2)檢測范圍信息表格,必要元素包括上下限,對應表號,以及名稱等,格式要固定,在輸入文檔中有明確的說明,格式如圖5、圖6及圖7所示:
3)輸出分默認值,檢測范圍和可調參數(shù)三種格式,原有分別有三個文件用于對比校驗;
4)Sheet1為默認處理數(shù)據(jù)的工作表。
3.2實現(xiàn)說明
實現(xiàn)界面如圖8、圖9及圖10所示:
實現(xiàn)步驟如下:
1)打開word:打開待處理word,路徑和名稱可手動更改,默認是相同路徑下的TEST.docx文件,同時創(chuàng)建默認值.c、檢測范圍.c及flash.flashconfig三個文件,刪除默認4個工作表之外的表;
2)數(shù)據(jù)提取:
a)記錄word中表名稱,獲取表格目錄,并將其拷貝到表格目錄工作表中;
b)將表格拷貝到與表號相同的工作表中,如沒有則創(chuàng)建,有則刪除,同時建立表格目錄中表名到表格工作表的鏈接;
c)判斷是一維、二維還是三維曲線,分別從相應的工作表中讀取上下限及曲線名稱,調用相應函數(shù)進行處理;
3)數(shù)據(jù)比較:對已有維護項目,將生成的文件與已有的文件調用beyondcompare軟件進行對比,對結果進行驗證;
4)關閉word:都處理完畢后選擇是否關閉打開的輸入文件。
3.3關鍵處理說明
3.3.1將word表格拷貝到excel的工作表中
Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetname(j)‘增加工作表
Sheets(sheetname(j)).Activate
.Tables(j).Range.Copy‘復制word表
ActiveSheet.Cells(1,1).Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True‘粘貼word表
3.3.2寫入文件
創(chuàng)建和寫入文件有以下兩種,用open和用文件系統(tǒng),open對應的close關閉才算寫入完成,本文選擇filesystemobject來創(chuàng)建和寫入文本。
a)用open
Bn = 要創(chuàng)建的文件完整路徑
Open Bn For Output As #4
Print #4, data;
Close #4
b) 用文件系統(tǒng)
Dim fso As New FileSystemObject
Setfso = CreateObject("Scripting.FileSystemObject")
Bn =要創(chuàng)建的文件完整路徑
Set f = fso.OpenTextFile(Bn, 2, True)
f.Write data
3.3.3取word表格中數(shù)字
1)利用正則表達式[5],編寫函數(shù)去掉字符串中的指定類型的類,如去掉漢字、去掉數(shù)字及去掉字符等,所寫函數(shù)如下:
Function exReplace(str As String, repstr As String, pat As String)
2)exReplace(word, "", "\D"),去掉word中的除數(shù)字外的其他內容,寫函數(shù)將word中區(qū)分負數(shù)符號“-”及小數(shù)點“.”,利用取位置位操作再拼一起,所寫函數(shù)如下:
Function GetNumber(word As String)
3.3.4讀取不同維度數(shù)據(jù)
根據(jù)輸入模板可知,主要針對X軸、Y軸及Z軸數(shù)據(jù)分了多行,因此要查找分了多少行,倒序查找分了多少行,將所有的數(shù)據(jù)取全,記錄X軸、Y軸、Z軸的數(shù)據(jù)個數(shù)與數(shù)值,根據(jù)指定格式輸出到相應的文件中。
3.4 實現(xiàn)結果
建立TEST.docx,內有一維表[4161]、二維表[1426]和三維表[4177],同時相應的表的檢測也在excel對應工作表中。
生成結果,word每個表格都讀取到excel中,如圖11所示。
生成的文件如圖12所示。
將生成文件與原有比較,結果如圖13、圖14及圖15所示,經比較發(fā)現(xiàn),不同之處是名稱及其他描述信息不同,數(shù)值不同之處是在flashconfig中,有個0.33和0.325的不同,經分析,原文件中經excel處理時小數(shù)位被約掉了,工具生成的文件數(shù)據(jù)正確,本工具在用excel處理數(shù)據(jù)時以文本的形式而不是數(shù)字的形式,以避免數(shù)據(jù)有誤。
4 結束語
本文開發(fā)了一種在FADEC軟件開發(fā)過程中從word中獲取表格數(shù)據(jù)并直接生成代碼和可調整參數(shù)的工具。通過實現(xiàn)結果表明,該工具可用于在軟件新研開發(fā)階段直接生成代碼及維護階段的參數(shù)的維護,可以避免手動輸入數(shù)據(jù)可能發(fā)生的錯誤,同時提高開發(fā)效率。
參考文獻:
[1]武曄卿.嵌入式系統(tǒng)可靠性設計技術及案例解析[M].北京:北京航空航天大學出版社,2012.7.
[2]John Walkenbach. Excel 2010 power programming with VBA [M]. Wiley publishing,Inc.,Indianapolis,Indiana,2010.
[3]Bill Jelen,TracySyrstad.VBAandMacros:Microsoft excel 2010[M].Que Corporation,U.S.,2010
[4]Excel Home.別怕,Excel VBA其實很簡單[M].北京:北京大學出版社,2016.7.
[5]侯秀紅,董峰.Visual Basic 6.0中正則表達式的應用[J].鄭州輕工業(yè)學院學報,2005,20(4),38-41.