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