HI 您好,歡迎來到巨人電商全國(guó)服務(wù)總部!
關(guān)注巨人電商微信客服
一鍵登錄我的賬戶,隨時(shí)查看您當(dāng)前位置 : 首頁 電商百科 qt工業(yè)組態(tài)系統(tǒng)軟件開發(fā)公司有哪些呢
qt工業(yè)組態(tài)系統(tǒng)軟件開發(fā)公司有哪些呢
在工控領(lǐng)域,我們用到的組態(tài)軟件有組態(tài)王、Cimplicity等,一方面這些軟件是收費(fèi)的,另一方面無論這些軟件做得多好,都沒辦法把自己的品牌打出去,沒辦法滿足各種自定義的需求。于是,我花了兩個(gè)星期時(shí)間,開發(fā)了一款簡(jiǎn)易版的。這是流程圖界面:
組態(tài)軟件開發(fā)公司都有哪些
*北京華盛恒輝做軟件致電壹伍扒+++壹壹叁叁++++駟柒駟駟軟件開發(fā)公司《北京》
*北京五木恒潤(rùn)科技有限公司《北京》
*航天信息股份有限公司《北京》
*北電網(wǎng)絡(luò)nortel《北京》
*北京朗新《北京》
*北京科思誠(chéng)科技有限公司《北京》
*北京拓爾思信息技術(shù)有限公司TRS《北京》
其實(shí)組態(tài)軟件并沒有我們想像的那么難。我們需要的功能無非就是有一張可以靈活編輯的圖,這個(gè)圖里面的元素會(huì)根據(jù)系統(tǒng)的狀態(tài)去變化。
一、圖片的呈現(xiàn)
我是使用WPF去開發(fā)的,首先整個(gè)畫面是一個(gè)Canvas,然后里面放一些Image元素。我們知道,在組態(tài)里面,每一個(gè)元件有幾種狀態(tài)。例如一個(gè)閥,有半閉的狀態(tài)和打開的狀態(tài),一條水管,有靜止和向左向右流動(dòng)的狀態(tài)。我們?cè)O(shè)計(jì)的方法是,根據(jù)系統(tǒng)的數(shù)據(jù),判斷應(yīng)該呈現(xiàn)哪一張圖,然后把那張圖添加在Canvas里面。當(dāng)系統(tǒng)數(shù)據(jù)改變時(shí),Canvas去掉舊圖,添加新圖。
靜態(tài)的圖可以用png、jpg這些格式,動(dòng)態(tài)的圖只能使用gif了。WPF默認(rèn)是不能顯示動(dòng)態(tài)圖的,我使用了一個(gè)第三方庫去完成這項(xiàng)任務(wù)。有興趣的朋友可以搜索一下WpfAnimatedGif,這是目前發(fā)現(xiàn)顯示gif性能最好的一個(gè)第三方庫。
二、元件的結(jié)構(gòu)
其實(shí)在組態(tài)圖中,有兩種元件,一是圖片,二是文字。而且,圖片有三種拉伸方法,一是隨意拉伸,二是只能橫向拉伸(例如水平的管路),三是只能豎向位伸。我們把元件類結(jié)構(gòu)定義如下:
其中,Component類完成了所有移動(dòng)、放縮、旋轉(zhuǎn)的功能,而下面繼承的類只是指明了一些額外的屬性。
三、圖片的編輯
圖片的編輯是最為復(fù)雜的一項(xiàng)功能。編輯界面如下圖所示:
我實(shí)現(xiàn)了一些基本的功能,例如選中元件之后,進(jìn)行拉伸拖拉、放大縮小、旋轉(zhuǎn)等,還有上下移動(dòng)一層、對(duì)齊等功能。在這里面,旋轉(zhuǎn)之后的放縮是最為復(fù)雜的。
在WPF里面,元素的旋轉(zhuǎn)都是使用RotateTransform完成的。旋轉(zhuǎn)之后,元素在我們眼中,其Left和Top屬性都變了,但其實(shí)在代碼里,Left和Top并沒有變化。這就產(chǎn)生了兩個(gè)坐標(biāo)系。我們看到的元件坐標(biāo)系跟元件在代碼里的坐標(biāo)系是不一樣的。而我們用鼠標(biāo)去拖動(dòng)元件的時(shí)候,鼠標(biāo)的坐標(biāo)其實(shí)是我們眼中的坐標(biāo)系,對(duì)元件產(chǎn)生作用前,需要先轉(zhuǎn)成元件真實(shí)的坐標(biāo)系。當(dāng)元件動(dòng)了以后,它在自己坐標(biāo)系里的位置需轉(zhuǎn)換成我們眼中的坐標(biāo)系。這里面需要用到一些微分的概念。具體怎么算的,在這里不贅述,文字很難表達(dá)。這是坐標(biāo)轉(zhuǎn)換的函數(shù):
四、數(shù)據(jù)的交互
對(duì)于組態(tài)圖,除了呈現(xiàn)圖形外,我們還希望:
(5)圖形根據(jù)系統(tǒng)狀態(tài)變化而變化。
(2)點(diǎn)擊圖形時(shí),組態(tài)圖能向主程序發(fā)送一些內(nèi)容。
關(guān)于這兩點(diǎn),我們定義了兩個(gè)概念,一是顯示條件,二是點(diǎn)擊事件。
在一個(gè)元件里面,包含了多個(gè)圖片,而每張圖片,都有自己的顯示條件和點(diǎn)擊事件。顯示條件和點(diǎn)擊事件都是一些表達(dá)式,如上圖所示,當(dāng)“5號(hào)采樣閥狀態(tài)”為5的時(shí)候,綠色的圖案就會(huì)顯示,而當(dāng)用戶點(diǎn)擊了這個(gè)綠色圖案時(shí),主程序就會(huì)向“5號(hào)采樣閥”發(fā)送一個(gè)0的信號(hào)。
組態(tài)圖控件是通過三個(gè)列表跟主程序交互的,分別是顯示條件列表、顯示條件值列表、點(diǎn)擊事件列表。
顯示條件列表就是List,例如是{“5號(hào)采樣閥狀態(tài)”,"2號(hào)采樣泵狀態(tài)","清洗閥狀態(tài)"}??丶陲@示條件輸入框里提示用。
顯示條件值列表是Dictionary,例如是{“5號(hào)采樣閥狀態(tài)”=5,"2號(hào)采樣泵狀態(tài)"=0,"清洗閥狀態(tài)"=0}。主程序每隔一段時(shí)間向組態(tài)控件發(fā)送這個(gè)列表,組態(tài)控件解析每個(gè)組件的顯示條件,判斷顯示哪一張圖。
標(biāo)簽:伊春 長(zhǎng)春 海南 四平 日喀則 淄博 吉林 咸寧