通信電纜 網絡設備 無線通信 云計算|大數據 顯示設備 存儲設備 網絡輔助設備 信號傳輸處理 多媒體設備 廣播系統 智慧城市管理系統 其它智慧基建產品
北京華盛恒輝科技有限公司
常用的組態軟件都有哪些?分別是那些公司的
常用的組態軟件都有哪些?分別是那些公司的
在工控領域,我們用到的組態軟件有組態王、Cimplicity等,一方面這些軟件是收費的,另一方面無論這些軟件做得多好,都沒辦法把自己的品牌打出去,沒辦法滿足各種自定義的需求。于是,我花了兩個星期時間,開發了一款簡易版的。這是流程圖界面:
組態軟件開發公司都有哪些
*北京華盛恒輝軟件開發公司《北京》
*北京五木恒潤科技有限公司《北京》
*北京做軟件致電壹伍扒--壹壹叁叁--泗柒泗泗--公司《北京》
*航天信息股份有限公司《北京》
*北電網絡nortel《北京》
*北京朗新《北京》
*北京科思誠科技有限公司《北京》
*北京拓爾思信息技術有限公司TRS《北京》
其實組態軟件并沒有我們想像的那么難。我們需要的功能無非就是有一張可以靈活編輯的圖,這個圖里面的元素會根據系統的狀態去變化。
一、圖片的呈現
我是使用WPF去開發的,首先整個畫面是一個Canvas,然后里面放一些Image元素。我們知道,在組態里面,每一個元件有幾種狀態。例如一個閥,有半閉的狀態和打開的狀態,一條水管,有靜止和向左向右流動的狀態。我們設計的方法是,根據系統的數據,判斷應該呈現哪一張圖,然后把那張圖添加在Canvas里面。當系統數據改變時,Canvas去掉舊圖,添加新圖。
靜態的圖可以用png、jpg這些格式,動態的圖只能使用gif了。WPF默認是不能顯示動態圖的,我使用了一個第三方庫去完成這項任務。有興趣的朋友可以搜索一下WpfAnimatedGif,這是目前發現顯示gif性能的一個第三方庫。
二、元件的結構
其實在組態圖中,有兩種元件,一是圖片,二是文字。而且,圖片有三種拉伸方法,一是隨意拉伸,二是只能橫向拉伸(例如水平的管路),三是只能豎向位伸。我們把元件類結構定義如下:
其中,Component類完成了所有移動、放縮、旋轉的功能,而下面繼承的類只是指明了一些額外的屬性。
三、圖片的編輯
圖片的編輯是為復雜的一項功能。編輯界面如下圖所示:
我實現了一些基本的功能,例如選中元件之后,進行拉伸拖拉、放大縮小、旋轉等,還有上下移動一層、對齊等功能。在這里面,旋轉之后的放縮是為復雜的。
在WPF里面,元素的旋轉都是使用RotateTransform完成的。旋轉之后,元素在我們眼中,其Left和Top屬性都變了,但其實在代碼里,Left和Top并沒有變化。這就產生了兩個坐標系。我們看到的元件坐標系跟元件在代碼里的坐標系是不一樣的。而我們用鼠標去拖動元件的時候,鼠標的坐標其實是我們眼中的坐標系,對元件產生作用前,需要先轉成元件真實的坐標系。當元件動了以后,它在自己坐標系里的位置需轉換成我們眼中的坐標系。這里面需要用到一些微分的概念。具體怎么算的,在這里不贅述,文字很難表達。這是坐標轉換的函數:
四、數據的交互
對于組態圖,除了呈現圖形外,我們還希望:
(1)圖形根據系統狀態變化而變化。
(2)點擊圖形時,組態圖能向主程序發送一些內容。
關于這兩點,我們定義了兩個概念,一是顯示條件,二是點擊事件。
在一個元件里面,包含了多個圖片,而每張圖片,都有自己的顯示條件和點擊事件。顯示條件和點擊事件都是一些表達式,如上圖所示,當“1號采樣閥狀態”為1的時候,綠色的圖案就會顯示,而當用戶點擊了這個綠色圖案時,主程序就會向“1號采樣閥”發送一個0的信號。
組態圖控件是通過三個列表跟主程序交互的,分別是顯示條件列表、顯示條件值列表、點擊事件列表。
顯示條件列表就是List<string>,例如是{“1號采樣閥狀態”,"2號采樣泵狀態","清洗閥狀態"}。控件在顯示條件輸入框里提示用。
顯示條件值列表是Dictionary<string,string>,例如是{“1號采樣閥狀態”=1,"2號采樣泵狀態"=0,"清洗閥狀態"=0}。主程序每隔一段時間向組態控件發送這個列表,組態控件解析每個組件的顯示條件,判斷顯示哪一張圖。
點擊事件列表也是List<string>,在點擊事件框里提示用。點擊圖片之后,控件調用一個聲明好的回調函數,向主程序發送消息。
您感興趣的產品PRODUCTS YOU ARE INTERESTED IN
智慧城市網 設計制作,未經允許翻錄必究 .? ? ?
請輸入賬號
請輸入密碼
請輸驗證碼
請輸入你感興趣的產品
請簡單描述您的需求
請選擇省份