蘇亞娟 榮音
摘要:在嵌入式計算機系統(tǒng)中,一般包含上位機與下位機控制板卡;這種系統(tǒng)一般是一種型號的控制板卡對應(yīng)一款上位機軟件,優(yōu)點是功能簡潔明了,缺點是用戶需要針對不同板卡安裝不同的軟件,對用戶要求較高或增加額外的軟件成本。本文提出一種通用的統(tǒng)一抽象板卡概念,通過抽象API,可以支持多種型號的控制板卡,實現(xiàn)軟件使用一致性,方便應(yīng)用軟件工程師的編程。
關(guān)鍵詞:嵌入式;計算機系統(tǒng);多型號;統(tǒng)一抽象板卡;API
中圖分類號:TP273.5 文獻標(biāo)識碼:A 文章編號:1007-9416(2019)11-0132-02
0 簡介
一般控制板卡的上位機軟件最初總是對應(yīng)初始版本的硬件板卡,當(dāng)板卡成系列、多型號發(fā)展時,原先各自的獨立上位機軟件不便于管理與使用,就需要設(shè)計統(tǒng)一的程序,以便管理多種型號的設(shè)備,如在文獻[1]中設(shè)計了一種同時支持PCI與USB板卡的控制軟件。本文也是工作需要,根據(jù)需求設(shè)計了一種通用的統(tǒng)一抽象板卡API,以支持多型號的控制板卡。
1 軟件需求
隨著公司業(yè)務(wù)的發(fā)展,研發(fā)的板卡需要定制化、多樣化與系列化,因此迫切需要設(shè)計一種接口來隱藏這種硬件多樣性,提出開發(fā)需求如下:
(1)從應(yīng)用程序角度看,能夠隱藏硬件特定信息;(2)支持多型號的控制板卡;(3)支持每種型號的多個數(shù)目的控制板卡。
應(yīng)用開發(fā)人員可以用這個抽象板卡的API,編制程序而無需考慮實際板卡類型。單個應(yīng)用程序可以控制多個板卡,而且當(dāng)有新的板卡加入時,無需大的改動,就能支持。
抽象板卡的API,設(shè)計上不能直接操控硬件板卡,必須借助原先控制板卡的提供的API。因此,軟件工程的角度看,統(tǒng)一抽象控制板卡API,只有兩個外部接口,一邊是上層的主機程序,另一邊是下層具體的激光控制板卡API。統(tǒng)一建模語言(Unified Modeling Language,UML)[2-3]是軟件工程中一種為面向?qū)ο笙到y(tǒng)的產(chǎn)品進行說明、可視化和編制文檔的一種標(biāo)準(zhǔn)語言,UML是面向?qū)ο笤O(shè)計的建模工具。抽象板卡API的UML用例圖如圖1所示。
2 抽象接口組成分解
抽象接口的功能分解圖如圖2所示。
抽象接口由三個層級的動態(tài)庫成分組成,從上至下依次為:
(1)LC.HWInterface.dll。(2)LC.HWMgr.dll。(3)LC.B1Mgr.dll, LC.B2Mgr.dll。
2.1 LC.HWInterface.dll
LC.HWInterface.dll包含了直接由上位機軟件調(diào)用的API函數(shù),在該DLL中會引用下層的LC.HWMgr.dll。LC.HWInterface.dll包含三個類:Job、DeviceStatus與HWController。
Job類提供了上層應(yīng)用軟件訪問特定激光控制器的便利途徑,從而隱藏了多種激光器控制板卡的復(fù)雜性。每個打標(biāo)任務(wù)必須對應(yīng)一個Job對象,而每個Job對象又綁定了一個控制板卡。Job對象還包含當(dāng)前任務(wù)的完成情況、錯誤狀態(tài)等。
DeviceStatus對象提供了上層軟件對特定激光器狀態(tài)的單點訪問。在DeviceStatus對象的整個生命周期內(nèi)可以對激光器的狀態(tài)隨時查詢。
HWController則對連接的設(shè)備進行各種控制管理提供方法。比如,初始化硬件、創(chuàng)建Job對象與DeviceStatus對象、關(guān)閉硬件等。
2.2 LC.HWMgr.dll
LC.HWMgr.dll包含了公共接口,這些接口從LC.B1Mgr. dll,LC.B2Mgr.dll或其他新的板卡支持Dll里實現(xiàn)的函數(shù)抽象出來的。所以,如果需要整合新的控制板卡,就需要實現(xiàn)LC.HWMgr.dll中定義的接口。LC.HWMgr.dll就是為了隱藏控制卡的類型而引入的,LC.HWInterface.dll并不需要知道控制卡的信息,僅僅有接口的引用信息。
LC.HWMgr.dll包含了一個類:HWCreator.和三個接口:
ILaserHW、IHWMgr、和IStatusUpdate。
具體實現(xiàn)參考第4節(jié)抽象接口類圖。
2.3 LC.B1Mgr.dll
LC.B1Mgr.dll中實現(xiàn)了LC.HWMgr.dll中定義的各個接口,且調(diào)用特定的控制板卡API。如果需要整合新的控制板卡,同樣的需要實現(xiàn)上面定義的接口。LC.B1Mgr.dll在編譯時候并不需要鏈接到API中,而是在LC.HWMgr.dll中根據(jù)配置文件動態(tài)的加載進。所以,對于新的控制板卡,同樣需要新寫一個動態(tài)庫,且在配置文件中給出必要的信息,根據(jù)需要動態(tài)加載。
包含三個類:B1HWMgr、B1Controller、和NetDevice Mgr。具體實現(xiàn)參照第4節(jié)抽象接口類圖。
3 抽象接口類圖
上位機應(yīng)用程序需要創(chuàng)建一個HWController實例,一個或多個打標(biāo)Job實例,對應(yīng)每個打標(biāo)激光設(shè)備的DeviceStatus實例。
HWCreator會根據(jù)配置文件來創(chuàng)建B1HWMgr或B2HWMgr的實例。在配置文件中需要指定控制板卡的類型。
抽象接口類圖,如圖3所示。
4 重要的公共方法整理(表1)
其他類略。
5 結(jié)論
該設(shè)計成功整合了目前公司的兩種型號的控制板卡,并實現(xiàn)了統(tǒng)一管理與使用接口。雖然本文僅以某激光公司的軟件開發(fā)為例,設(shè)計了支持多種類型控制板卡的接口函數(shù)庫,但是該設(shè)計方法,適用于各類用途的支持多控制板卡的接口設(shè)計,具有很強的借鑒意義。
參考文獻
[1] 趙文路.多模式多接口激光標(biāo)記控制軟件的設(shè)計與實現(xiàn)[D].華中科技大學(xué),2011.
[2] 宋雨,趙文清.軟件工程[M].中國電力出版社,2007.
[3] Grady Booch,等著.UML用戶指南(第2版)[M].人民郵電出版社,2012.