.NET在工控圖片儀器組配中的預設和踐行
組件技術(shù)軟件設計技術(shù)經(jīng)過了從結(jié)構(gòu)化軟件設計、面向?qū)ο筌浖O計到組件式軟件設計的發(fā)展過程,組件式技術(shù)是面向?qū)ο蠹夹g(shù)的發(fā)展和提高。它的開發(fā)思想就是將復雜的軟件開發(fā)分解成若干個功能組件,這些組件可以由不同的廠家用任何語言開發(fā),開發(fā)環(huán)境也無特別限制。若干組件可以根據(jù)具體應用要求可靠而有效的組合在一起完成復雜的任務。
組件(component)是指可方便插入語言、工具、操作系統(tǒng)、網(wǎng)絡軟件系統(tǒng)中的一種獨立可重用的二進制形式的代碼和數(shù)據(jù)。構(gòu)件的結(jié)構(gòu)和功能被封裝在內(nèi)部,對外界提供必要的接口,所有的數(shù)據(jù)交換都是通過接口實現(xiàn)的。組件就是對象,是對數(shù)據(jù)和方法的封裝。一個完整的組件應該有自己的屬性、方法、事件。
屬性是組件數(shù)據(jù)的簡單訪問者,方法是組件的一些簡單而可見的功能,事件是一種特定的操作,在某對象上發(fā)生或?qū)δ硨ο蟀l(fā)生的。自定義組件的事件就是指對所做組件的某種特定操作,像“按鈕”的單擊事件。
工控儀表組件的設計與實現(xiàn)本文介紹的組件是用C#。NET工具開發(fā)的。C#(Csharp)是由Microsoft公司開發(fā)一種最新的、面向?qū)ο蟮木幊陶Z言。它由C和C++派生出來,融合了VisualBasic的高效和C/C++強大。C#可以自動利用。NET類庫。
C#。NET組件設計方法在C#中,組件就是實現(xiàn)了接口System.Compo-nentModle.Icomponent的類,或者從System.Compo-nentModle.Componet類或其他實現(xiàn)了Icomponent接口的類的派生類。用C#開發(fā)的組件主要包括3種方法:從已有的Windows類派生、從UserControl類派生,或者從Control類派生。我們選擇的方法是從UserControl類派生,也就是自行創(chuàng)建一個用戶控件。采用這種方式需要從UserControl類派生自己的控件類,然后添加所需要的功能。UserControl類中定義了Windows窗體控件最基本的功能,包括窗口句柄、消息循環(huán)、鼠標鍵盤等用戶界面事件。采用這種方式需添加繪制代碼,可以對組件充分制定。
首先選擇從[模板]列表中選擇[Windows控件庫]選項創(chuàng)建新項目,Visualstudio會在窗體設計器創(chuàng)建新的組件控件。我們要做的工作就是在原始控件上繪制圖形,添加屬性、方法、事件等。具體包括:(1)繪制控件外觀,一般應用GDI+中提供的方法。(2)根據(jù)需要添加屬性,編寫get{}set{}訪問程序,存取屬性。(3)根據(jù)具體要求編寫方法和事件,設定該控件與用戶的交互。(4)編譯生成。dll文件。
組件的測試方法。代碼編寫完成以后生成。DLL文件。由于它不是可執(zhí)行文件,不能直接運行該程序,要創(chuàng)建例程來測試這個組件。首先把組件文件(。dll文件)添加到工具箱中;創(chuàng)建Windows應用程序;把組件拖放到Windows應用程序的Form窗體中,可以看到設計的組件的效果,從屬性窗口修改控件屬性,也可以測試控件中設計的方法和事件。
組件設計中涉及的技術(shù)一是GDI+技術(shù)。GDI+是GDI(GraphicsDeviceInterface圖形設備接口)的改進產(chǎn)品,是Microsoft的下一代二維圖形系統(tǒng),它是完全面向?qū)ο蟮�。GDI+包括3部分:二維矢量圖形繪制、圖像處理和文字顯示。
GDI+中提供了各式各樣的畫筆、畫刷、圖像等圖形對象,此外還包括一些新的繪圖功能。圖形儀表組件中的動態(tài)和靜態(tài)界面都要用GDI+編程繪制實現(xiàn)。
二是多線程技術(shù)。用多線程技術(shù)可以編寫能夠同時執(zhí)行多個任務的應用程序。操作系統(tǒng)使用進程將正在執(zhí)行的不同應用程序分開。線程是操作系統(tǒng)分配處理器時間的基本單元,并且該進程中可以有多個線程同時執(zhí)行代碼。與用戶交互的軟件必須盡可能快地對用戶的活動作出反應,以便提供豐富多彩的用戶體驗。但同時它必須執(zhí)行必要的計算以便盡可能快地將數(shù)據(jù)呈現(xiàn)給用戶。要提高對用戶的響應速度并且處理所需數(shù)據(jù)以便幾乎同時完成工作,使用多個線程是一種強大的技術(shù)。在本設計中多線程技術(shù)用于實現(xiàn)組件的報警功能。計算機在監(jiān)測到輸入的數(shù)據(jù)超過警戒值時觸發(fā)報警事件,驅(qū)動蜂鳴器發(fā)出報警聲音。在報警的同時,計算機要繼續(xù)顯示并檢測現(xiàn)場,因此需要啟動多個線程,實現(xiàn)兩個功能的并行。
三是要解決控件繪圖中的閃爍問題。在控件運行中,由于數(shù)值的改變需要不斷地重繪,這就造成了控件的閃爍。為了解決這個問題可以采用以下幾種辦法:(1)僅重繪控件中改變的部分。
(2)采用雙緩存。具體做法是在控件的構(gòu)造函數(shù)中添加代碼:SetStyle(ControlStyles.UserPaint,true);SetStyle( ControlStyles.AllPaintingInWmPaint,true);//禁止擦除背景SetStyle(ControlStyles.DoubleBuffer,true);//雙緩沖這段代碼的意義如下:UserPaint如果為true,控件將自行繪制,而不是通過操作系統(tǒng)來繪制,此樣式僅適用于派生自Control的類;AllPaintingInWmPaint如果為true,控件將忽略WM_ERASEBKGND窗口消息以減少閃爍,僅當UserPaint位設置為true時,才應當應用該樣式;DoubleBuffer如果為true,則繪制在緩沖區(qū)中進行,完成后將結(jié)果輸出到屏幕上。雙重緩沖區(qū)可防止由控件重繪引起的閃爍。要完全啟用雙重緩沖,還必須將UserPaint和AllPaintingInWmPaint樣式位設置為true.
(3)在內(nèi)存中繪制圖形。GDI+函數(shù)向屏幕輸出并不是立即顯示在屏幕上,而是保存在顯存中,而顯卡每隔一段時間把顯存的內(nèi)容輸出到屏幕上。而如果控件的繪制不是在一個刷新周期內(nèi)完成,那勢必會造成閃爍。為解決這個問題,控件的繪制可以在內(nèi)存中完成,然后利用一條命令再將之繪制到屏幕上。經(jīng)過試驗,這種方法效果良好。
溫度計、儀表盤組件的設計與實現(xiàn)溫度計組件功能分析:(1)顯示溫度:這是溫度計最基本的功能,通過水銀柱的升降顯示數(shù)據(jù)的變化,通過刻度讀出溫度值。(2)報警功能:在工業(yè)監(jiān)測中,當檢測到溫度高于警戒溫度時,要進行聲光報警。(3)組件的屬性:對溫度計背景、水銀柱、文本、刻度等的顏色可以根據(jù)用戶的需要自由搭配,儀表量程可以根據(jù)測量要求設置。如表1所示。
解決讓水銀柱隨輸入的溫度升降的問題。水銀柱實際上是一個矩形,讓水銀柱升降就是改變水銀柱高度。實現(xiàn)方法就是將原來的水銀柱用底色覆蓋,然后用新高度繪制一個新矩形,當連續(xù)輸入溫度時,水銀柱不斷重繪,由于人的視覺器官有一定的反應時間差,所以不會察覺重繪,只繪觀察到水銀柱在做升降運動。儀表盤組件的功能要求類似,不同的是要通過指針的轉(zhuǎn)動顯示速度值。所以關(guān)鍵是要通過旋轉(zhuǎn)坐標系,實現(xiàn)指針的轉(zhuǎn)動。儀表盤刻度是圓形排列的,要把坐標轉(zhuǎn)移至中心,逆時針旋轉(zhuǎn)作圖。儀表盤組件設計中用到的相關(guān)方法函數(shù):TranslateTransform:坐標原點移動。
RotateTransform:以原點為中心,將圖形或文本旋轉(zhuǎn)一定角度。實現(xiàn)儀表指針的轉(zhuǎn)動要通過輸入的數(shù)據(jù)計算需要轉(zhuǎn)動角度y2.y2=(240/Graduate)*Pointvalue其中Graduate為量程,Pointvalue是輸入的數(shù)據(jù)。使用函數(shù)RotateTransform(y2+150),將指針旋轉(zhuǎn)到指定位置。
應用實例是儀表和溫度計組件在“測溫測速監(jiān)控管理系統(tǒng)”中的應用。下位機通過串行口發(fā)送檢測數(shù)據(jù),上位機用高級語言編程實現(xiàn)數(shù)據(jù)的實時監(jiān)控和數(shù)據(jù)管理。系統(tǒng)通過數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)管理功能,調(diào)用組件,實現(xiàn)數(shù)據(jù)顯示的圖形化。該系統(tǒng)利用組件技術(shù)實現(xiàn)界面模擬儀表的軟件重用,在滿足界面美觀、功能完善的同時,簡化編程工作量、提高設計效率。經(jīng)過該系統(tǒng)的測試,儀表組件顯示正常,各項功能穩(wěn)定。
結(jié)束語組件技術(shù)對提高軟件開發(fā)效率、減輕維護負擔、保證軟件質(zhì)量和版本的健壯、更新都具有非常重要的意義。本文提出利用組件技術(shù),開發(fā)一個可移植性強的通用工控圖形儀表組件庫,根據(jù)用戶的不同需求嵌入到各種具體的應用設計中,具有極大的靈活性和實用性。http://www.pfyin.com