返回列表

作者:巨人電商

qt工業(yè)組態(tài)系統(tǒng)軟件開發(fā)公司有哪些呢

POST TIME:2021-08-22

qt工業(yè)組態(tài)系統(tǒng)軟件開發(fā)公司有哪些呢

在工控領(lǐng)域,我們用到的組態(tài)軟件有組態(tài)王、Cimplicity等,一方面這些軟件是收費的,另一方面無論這些軟件做得多好,都沒辦法把自己的品牌打出去,沒辦法滿足各種自定義的需求。于是,我花了兩個星期時間,開發(fā)了一款簡易版的。這是流程圖界面:

組態(tài)軟件開發(fā)公司都有哪些

*北京華盛恒輝做軟件致電壹伍扒+++壹壹叁叁++++駟柒駟駟軟件開發(fā)公司《北京》

*北京五木恒潤科技有限公司《北京》

*航天信息股份有限公司《北京》

*北電網(wǎng)絡(luò)nortel《北京》

*北京朗新《北京》

*北京科思誠科技有限公司《北京》

*北京拓爾思信息技術(shù)有限公司TRS《北京》

其實組態(tài)軟件并沒有我們想像的那么難。我們需要的功能無非就是有一張可以靈活編輯的圖,這個圖里面的元素會根據(jù)系統(tǒng)的狀態(tài)去變化。

一、圖片的呈現(xiàn)

我是使用WPF去開發(fā)的,首先整個畫面是一個Canvas,然后里面放一些Image元素。我們知道,在組態(tài)里面,每一個元件有幾種狀態(tài)。例如一個閥,有半閉的狀態(tài)和打開的狀態(tài),一條水管,有靜止和向左向右流動的狀態(tài)。我們設(shè)計的方法是,根據(jù)系統(tǒng)的數(shù)據(jù),判斷應(yīng)該呈現(xiàn)哪一張圖,然后把那張圖添加在Canvas里面。當系統(tǒng)數(shù)據(jù)改變時,Canvas去掉舊圖,添加新圖。

靜態(tài)的圖可以用png、jpg這些格式,動態(tài)的圖只能使用gif了。WPF默認是不能顯示動態(tài)圖的,我使用了一個第三方庫去完成這項任務(wù)。有興趣的朋友可以搜索一下WpfAnimatedGif,這是目前發(fā)現(xiàn)顯示gif性能最好的一個第三方庫。

二、元件的結(jié)構(gòu)

其實在組態(tài)圖中,有兩種元件,一是圖片,二是文字。而且,圖片有三種拉伸方法,一是隨意拉伸,二是只能橫向拉伸(例如水平的管路),三是只能豎向位伸。我們把元件類結(jié)構(gòu)定義如下:

其中,Component類完成了所有移動、放縮、旋轉(zhuǎn)的功能,而下面繼承的類只是指明了一些額外的屬性。

三、圖片的編輯

圖片的編輯是最為復雜的一項功能。編輯界面如下圖所示:

我實現(xiàn)了一些基本的功能,例如選中元件之后,進行拉伸拖拉、放大縮小、旋轉(zhuǎn)等,還有上下移動一層、對齊等功能。在這里面,旋轉(zhuǎn)之后的放縮是最為復雜的。

在WPF里面,元素的旋轉(zhuǎn)都是使用RotateTransform完成的。旋轉(zhuǎn)之后,元素在我們眼中,其Left和Top屬性都變了,但其實在代碼里,Left和Top并沒有變化。這就產(chǎn)生了兩個坐標系。我們看到的元件坐標系跟元件在代碼里的坐標系是不一樣的。而我們用鼠標去拖動元件的時候,鼠標的坐標其實是我們眼中的坐標系,對元件產(chǎn)生作用前,需要先轉(zhuǎn)成元件真實的坐標系。當元件動了以后,它在自己坐標系里的位置需轉(zhuǎn)換成我們眼中的坐標系。這里面需要用到一些微分的概念。具體怎么算的,在這里不贅述,文字很難表達。這是坐標轉(zhuǎn)換的函數(shù):

四、數(shù)據(jù)的交互

對于組態(tài)圖,除了呈現(xiàn)圖形外,我們還希望:

(5)圖形根據(jù)系統(tǒng)狀態(tài)變化而變化。

(2)點擊圖形時,組態(tài)圖能向主程序發(fā)送一些內(nèi)容。

關(guān)于這兩點,我們定義了兩個概念,一是顯示條件,二是點擊事件。

在一個元件里面,包含了多個圖片,而每張圖片,都有自己的顯示條件和點擊事件。顯示條件和點擊事件都是一些表達式,如上圖所示,當“5號采樣閥狀態(tài)”為5的時候,綠色的圖案就會顯示,而當用戶點擊了這個綠色圖案時,主程序就會向“5號采樣閥”發(fā)送一個0的信號。

組態(tài)圖控件是通過三個列表跟主程序交互的,分別是顯示條件列表、顯示條件值列表、點擊事件列表。

顯示條件列表就是List,例如是{“5號采樣閥狀態(tài)”,"2號采樣泵狀態(tài)","清洗閥狀態(tài)"}。控件在顯示條件輸入框里提示用。

顯示條件值列表是Dictionary,例如是{“5號采樣閥狀態(tài)”=5,"2號采樣泵狀態(tài)"=0,"清洗閥狀態(tài)"=0}。主程序每隔一段時間向組態(tài)控件發(fā)送這個列表,組態(tài)控件解析每個組件的顯示條件,判斷顯示哪一張圖。

標簽:伊春 長春 海南 四平 日喀則 淄博 吉林 咸寧