北京三微軟件開發(fā)公司聯(lián)合工業(yè)控制,實時監(jiān)控,數(shù)據(jù)采集,監(jiān)控與組態(tài)解決方案。工業(yè)控制軟件對圖形處理要求很高,需要很強(qiáng)的實時響應(yīng)能力,往往開發(fā)類似的界面需要花費(fèi)很長的開發(fā)時間,E-Form++可視化圖形組件庫是開發(fā)類似應(yīng)用的最佳選擇之一,組件庫本身全部采用VE-C++開發(fā)而成,并采用最先進(jìn)的MVE-Form++設(shè)計模式,將顯示層和數(shù)據(jù)層分開處理,具有極強(qiáng)的擴(kuò)展性。能為您開發(fā)任何類似應(yīng)用節(jié)省大量的開發(fā)時間!
北京三微軟件開發(fā)公司提供的這些解決方案并不意味著E-Form++可視化圖形組件庫只能開發(fā)這些方面的應(yīng)用,事實上E-Form++同任何其他第三方C++組件庫一樣,包含數(shù)百項可以分開獨立使用的功能。同QT, MFC等一樣,您可以獨立決定是否需要E-Form++中的某項功能,一般來講,只要您需要圖形顯示、需要流程圖、控制圖、打印功能、排版功能、仿真、電子地圖、電力接線圖、表單等等功能,您就可以使用E-Form++組件庫,當(dāng)然有的時候也許您只希望使用E-Form++提供的下拉顏色等控件而不需要繪圖功能,那也沒可以。這個示例展示了如何使用E-Form++可視化圖形組件庫開發(fā)工控方面的應(yīng)用,這個示例包含了三個能夠獨立運(yùn)轉(zhuǎn)的控件,包括:泵機(jī),測量表和活塞,E-Form++可視化圖形組件庫支持簡單而精確的定時器控制功能,可以根據(jù)需要創(chuàng)建其他工控組件.如下圖:
1. E-Form++從設(shè)計之初就為畫布上的任何圖形單獨設(shè)定能獨立啟動的定時器功能,這意味著只要你希望讓畫布中的某個圖形動起來就可以讓其動起來。
2. E-Form++庫本身采用100% VC++開發(fā)而成,所有代碼經(jīng)過嚴(yán)格測試,讓您的應(yīng)用達(dá)到最佳性能。
3. 該解決方案已經(jīng)為全球眾多航天,軍工,科研單位成功在仿真,工業(yè)控制等方面使用,具有最佳的穩(wěn)定性。
系統(tǒng)提供了如下現(xiàn)成的矢量圖形,更過的復(fù)雜圖形可以通過正式版本提供的專業(yè)復(fù)合圖形設(shè)計程序ShapeDesigner來設(shè)計。
1). Industrial Equipment Components.
2). Heating Equipment Components
3). Pumps Components.
4. 此外還有:
100% MFC設(shè)計。
超過30萬行有效代碼,以及超過300個C++擴(kuò)展類。
自動代碼產(chǎn)生程序以及完整的開發(fā)文檔,幫助您快速構(gòu)建各種基于Form++的應(yīng)用。
提供開發(fā)高級應(yīng)用系統(tǒng)的完善的可擴(kuò)展的界面控制功能。
提供一行代碼修改屬性并支持Undo/Redo功能。
用戶可根據(jù)自己的需要對畫布、組件、操作等各種操作進(jìn)行自定義。
同時支持單頁面或者多頁面應(yīng)用程序。
對組件進(jìn)行布局、間隔、順序編排。
打印、打印預(yù)覽以及輸出到圖象。
繪制直線、標(biāo)注線、曲線、矩形、橢圓、添加文本、以及圖片等。
提供超過40個各種開發(fā)示例程序。
下面是使用E-Form++可視化源碼組件庫企業(yè)版本進(jìn)行監(jiān)控系統(tǒng)應(yīng)用開發(fā)的基本步驟:
1. 設(shè)計需要的監(jiān)控系統(tǒng)元件:
此步驟可以通過E-Form++提供的ShapeDesigner應(yīng)用程序來進(jìn)行設(shè)計,此工具可以直接將Microsoft Visio或者ConceptDraw等專業(yè)圖形工具設(shè)計的元件導(dǎo)入(SVG文件)進(jìn)來使用,當(dāng)然您也可以通過ShapeDesigner本身提供的豐富的基本 圖形來設(shè)計需要的監(jiān)控系統(tǒng)元件。在設(shè)計時,可以很方便的直接將畫布上設(shè)計的元件通過Copy, Paste的方式放到左邊的工具盒中,如下圖:
我們在設(shè)計元件的時候也可以對復(fù)合元件中的單個子元件定義一些便于以后識別和操作的Key ID值,這些值可以在以后通過調(diào)用GetKeyID來直接獲取。
2. 設(shè)計監(jiān)控系統(tǒng)需要的圖形界面:
E-Form++提供了專門的界面設(shè)計工具DiagramEditor,在此工具中,我們可以輕松的應(yīng)用通過上面的ShapeDesigner設(shè)計的各種監(jiān)控系統(tǒng)元件來搭建圖形界面。在搭建界面時,根據(jù)需要我們可以為特定的元件指定相應(yīng)的Key ID值,這些Key ID值便于我們在具體的程序中進(jìn)行控制,例如我們可以控制開關(guān)的關(guān)與開,燈的閃爍等等。設(shè)計好的圖形界面我們可以保存為單一的xdg文件,如下圖所示:
3. 監(jiān)控程序框架的構(gòu)建:
通過E-Form++可視化圖形組件庫提供的集成在Visual Studio的AppWizard(應(yīng)用程序創(chuàng)建向?qū)В﹣碜詣赢a(chǎn)生監(jiān)控系統(tǒng)的框架代碼,可將上面我們通過DiagramEditor設(shè)計的xdg文件導(dǎo)入到此程序中作為資源文件,當(dāng)我們需要裝載一個設(shè)計界面的時候就調(diào)用如下函數(shù):
LoadXdgFromResource(...); 如果我們需要切換到新的界面,也可以同樣調(diào)用該函數(shù)來裝載新的界面。參考示例NetworkDemo.
4. 實時數(shù)據(jù)的采集與處理:
外部數(shù)據(jù)的采集我們可以通過View類或則Window類的定時器來進(jìn)行采集,當(dāng)需要更新界面上的元件的狀態(tài)的時候,可以直接通過我們上面設(shè)計的Key值來獲取圖形元件或者元件中的子圖形。
5. 事務(wù)的處理:
通過覆蓋相應(yīng)的虛函數(shù)來時間各種事務(wù)的處理,例如我們只需要覆蓋CFOPcanvascore類的如下虛函數(shù)即可響應(yīng)按鈕的事件:
virtual void DoButtbEvent(CODrawShape *pShape, Const int &nSel);
HMI Demo示例簡單的展示了如何定義多頁面工控界面,如下所示:
下面這個示例展示了E-Form++開發(fā)工控和仿真程序的極其方便性和快捷性,如此復(fù)雜的示例程序,開發(fā)全部過程只需要半天時間,如下圖:
狀態(tài)一,移動油桶:
狀態(tài)二,注油,油表同時顯示注油的數(shù)量:
狀態(tài)三,注油完畢,儀表歸零,油槍關(guān)閉,使用拖車運(yùn)走:
下面是開發(fā)該示例程序的基本步驟:
一、設(shè)計該工控和仿真畫面需要的基本元件:
E-Form++組件庫本身提供了大量的工控元件,同時提供了專業(yè)元件設(shè)計工具ShapeDesigner,通過該工具可以輕松的設(shè)計需要的元件,我們將所有設(shè)計好的元件放入左邊工具盒中的一個固定的頁面中保存起來,方便使用:
以后再使用的時候直接拖拉出來即可。
二、設(shè)計工業(yè)控制與仿真畫面:
通過附隨E-Form++產(chǎn)品提供的DiagramEditor,可以為指定的工業(yè)控制 與仿真設(shè)計相應(yīng)的畫面,DiagramEditor提供了非常完善而強(qiáng)大的功能,保證能夠正確高效的完成各種高品質(zhì)的工控畫面的設(shè)計,在設(shè)計畫面的時候,我們只需要通過鼠標(biāo)拖拉的方式將步驟一中設(shè)計好的現(xiàn)成元件拖入畫布中搭建即可,如下圖:
當(dāng)我們在采集數(shù)據(jù)的時候,我們往往需要刷新畫布上的各種圖元的狀態(tài),在DiagramEditor特別為每個元件提供了5個關(guān)鍵字,通過任何一個關(guān)鍵字即可查詢到指定元件。如下圖的設(shè)定:
該設(shè)定中我們將最上面的元件的Key Value 1設(shè)定為K2。
三、搭建需要的工控與仿真程序:
通過E-Form++提供的AppWizard (應(yīng)用程序創(chuàng)建向?qū)В?,可以自動產(chǎn)生基于VE-Form++++的工控應(yīng)用程序框架,要裝載任何工控畫面,只需要先將上面設(shè)計好的XDG工控界面文件導(dǎo)入到應(yīng)用程序中形成XDGRES資源文件,然后調(diào)用如下函數(shù)即可:
LoadXdgFromResource(IDR_MAIN, _T("XdgRes"), FALSE);
當(dāng)然,如果是需要裝載新的工控界面,也同樣可以調(diào)用這個函數(shù)。
四、實時數(shù)據(jù)的采集:
可以通過View類的定時器功能,定時采集數(shù)據(jù),如果需要更新畫面的元件,調(diào)用控件本身的Updatecontrol即可,當(dāng)需要同時更新一系列元件的時候,可直接加入到CFODrawShapeList列表中,然后調(diào)用UpdateShapes即可。