• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Visual C++的機艙監(jiān)視與報警系統(tǒng)儀表實現(xiàn)*

      2014-06-09 12:33:48師光飛曠玉芬代建張道發(fā)武漢交通職業(yè)學(xué)院湖北武漢0065武漢理工大學(xué)湖北武漢006長江宜昌航道局湖北宜昌00
      關(guān)鍵詞:控件組態(tài)儀表

      師光飛曠玉芬代 建張道發(fā)(.武漢交通職業(yè)學(xué)院,湖北 武漢 0065;、.武漢理工大學(xué),湖北 武漢 006; .長江宜昌航道局,湖北 宜昌 00)

      基于Visual C++的機艙監(jiān)視與報警系統(tǒng)儀表實現(xiàn)*

      師光飛1曠玉芬2代 建3張道發(fā)4
      (1.武漢交通職業(yè)學(xué)院,湖北 武漢 430065;2、3.武漢理工大學(xué),湖北 武漢 430063; 4.長江宜昌航道局,湖北 宜昌 443002)

      通常船舶機艙監(jiān)視與報警系統(tǒng)在實船通過組態(tài)軟件實現(xiàn),但組態(tài)軟件在實船的應(yīng)用有一定的局限性:封裝的儀表難以修改即易讀不易寫;外觀顆粒感強、不清晰、呈偽彩等。而基于Visual C++對監(jiān)視與報警系統(tǒng)儀表的實現(xiàn),使用CRgn類實現(xiàn)圓形轉(zhuǎn)速表、圓角矩形溫度表以及液壓管路等監(jiān)視與報警系統(tǒng)中必不可少的儀表,通過CRect Tracker類可實現(xiàn)儀表的實時拖動與調(diào)整,實現(xiàn)系統(tǒng)的在線可定制,易讀易寫。

      測控;Visual C++;儀表

      機艙監(jiān)視與報警系統(tǒng)通常采用組態(tài)軟件實現(xiàn),組態(tài)軟件是使用靈活的組態(tài)方式,為用戶提供快速構(gòu)建工業(yè)自動控制系統(tǒng)監(jiān)控功能的通用層次軟件工具。[1]這些組態(tài)軟件在實現(xiàn)類似測控系統(tǒng)上具有搭建簡單、方便的優(yōu)點,但組態(tài)軟件是對儀表的預(yù)先封裝,因此,用戶若需要采用新的儀表只能通過軟件提供方對儀表的升級來實現(xiàn),不便于修改,系統(tǒng)適應(yīng)性較差,且呈現(xiàn)的圖片有較強的顆粒感、突兀感?;赩isual C++對監(jiān)控系統(tǒng)儀表的實現(xiàn)方法,能實現(xiàn)較好的界面效果,用戶可以依據(jù)自身需要對儀表的圖片進行修改,實現(xiàn)圖片與圖片容器的無縫連接,系統(tǒng)適應(yīng)性強;界面更美觀,可以使用真彩儀表背景圖片,系統(tǒng)可擴展性強,方便對系統(tǒng)功能進行升級,適用于實船的機艙監(jiān)視與報警及仿真等領(lǐng)域。

      1 系統(tǒng)構(gòu)成

      機艙監(jiān)視與報警系統(tǒng)的功能是準(zhǔn)確可靠地監(jiān)測機艙內(nèi)各種設(shè)備的運轉(zhuǎn)狀態(tài)及其參數(shù),一旦運行設(shè)備發(fā)生故障,自動發(fā)出聲、光報警信號。例如對船舶主機的轉(zhuǎn)速、冷卻水溫度、船舶電站的轉(zhuǎn)速、電壓、冷卻水溫以及噴淋冷卻系統(tǒng)的狀態(tài)進行監(jiān)視,當(dāng)監(jiān)視點發(fā)生異常時,且該監(jiān)視點未被閉鎖,則系統(tǒng)立即發(fā)出聲響報警,同時相應(yīng)的報警指示燈快速閃爍,指示報警內(nèi)容。[2]構(gòu)建該系統(tǒng)需要用到的儀表有:轉(zhuǎn)速表、溫度表、液壓管路等。

      2 基于Visual C++對檢測系統(tǒng)儀表實現(xiàn)的設(shè)計思路

      2.1 儀表圖片與控件的融合

      2.1.1 規(guī)則外形儀表圖片與控件的融合外形規(guī)則的儀表如轉(zhuǎn)速表、電壓表等通常為圓形或者矩形,而編程軟件提供的圖片容器如Visual C++中的picture控件,其外形為矩形,這樣通過控件載入圓形儀表圖片實現(xiàn)的儀表并不是真正意義上的圓形。雖然儀表為圓形,而儀表圖片卻是以矩形形式存在,因此,需要將控件和背景圖片進行裁剪,以使控件和儀表圖片能融合得體。

      使用CRgn類可以很方便地定義控件的外形,圓形儀表使用CRgn類的CreateEllipticRgn實現(xiàn),該函數(shù)創(chuàng)建一個橢圓形的區(qū)域,如果定義橢圓的長軸與短軸相等,則創(chuàng)建出來的是一個圓形區(qū)域。該函數(shù)原型如下:

      函數(shù)的四個參數(shù)分別定義了橢圓的左上、右下兩點的坐標(biāo),創(chuàng)建成功則返回該區(qū)域的句柄。為了適應(yīng)儀表背景圖片的大小,使用圖片的長寬來定義橢圓的大小,圖片尺寸的大小可以在程序中獲得或在系統(tǒng)中通過圖片屬性獲得。圖形融合前后對比如圖1。

      圖1 圓形儀表融合前后對比

      對于諸如溫度計一類的儀表,則可以通過CRgn類的CreateRoundRect Rgn來創(chuàng)建,該函數(shù)根據(jù)給定參數(shù)創(chuàng)建一個圓角矩形。該函數(shù)原型如下:

      函數(shù)有6個參數(shù),前四個參數(shù)定義了圓角矩形的左上、右下的兩點坐標(biāo),后兩個參數(shù)定義了圓角沿著X軸和Y軸的長度。這六個參數(shù)可以根據(jù)儀表背景圖片內(nèi)容酌情進行選擇,另外,關(guān)于溫度計液注的實現(xiàn),可以使用MoveWindow函數(shù)實現(xiàn)液柱的伸縮。

      2.1.2 不規(guī)則外形儀表圖片與控件的融合

      不規(guī)則外形的儀表,如管道、水泵等組件,具有不規(guī)則的外形,無法通過類似規(guī)則外形儀表的方式(通過設(shè)置裁剪區(qū)域的方式)進行融合。對于這一類儀表的做法,需要使用CRgn類的CombineRgn來進行摳圖,將背景圖片中除去儀表之外的部分“摳掉”,根據(jù)剩下部分的圖像創(chuàng)建一個區(qū)域并將此區(qū)域賦予控件。由于白色部分創(chuàng)建的區(qū)域與初始區(qū)域重合,在異或的作用下被剔除,而儀表本身的內(nèi)容則被保留下來,形成一個區(qū)域,將此區(qū)域賦予控件,使控件外形與儀表背景一致。

      2.2 控件在線調(diào)整的實現(xiàn)

      為了使程序能夠靈活定制,在程序處于運行態(tài)時,通過使用CRect Tracker類實現(xiàn)控件的自由調(diào)整。通過改變控件的大小和位置,使用有限的控件可以搭建出不同的組合。

      使用CRect Tracker類的關(guān)鍵在于CRect-Tracker類中的三個函數(shù):(1)void Draw(CDC* pDC)const。此函數(shù)繪制控件外的調(diào)整框的圖形,在使用鼠標(biāo)調(diào)整控件后,調(diào)用這個函數(shù)重繪當(dāng)前的調(diào)整框。(2)int Hit Test(CPoint point)const。該函數(shù)可以判斷當(dāng)前點擊的位置(參數(shù)point)位于調(diào)整框的什么位置,通常,返回值大于等于0表示鼠標(biāo)點擊的范圍在調(diào)整框內(nèi)。(3)BOOL Track (CWnd*p Wnd,CPoint point,BOOL b AllowInvert =FALSE,CWnd*p WndClip To=NULL)。此函數(shù)實時跟蹤調(diào)整框的大小,從鼠標(biāo)點擊到鼠標(biāo)抬起的過程中,Track記錄著調(diào)整框的大小。

      根據(jù)以上函數(shù)說明,在程序運行時動態(tài)調(diào)整控件的大小和位置,應(yīng)在鼠標(biāo)左鍵單擊的響應(yīng)函數(shù)中調(diào)用上述函數(shù),并根據(jù)調(diào)整框的大小和位置改變控件的大小和位置。

      使用CRect Tracker類實現(xiàn)控件的在線調(diào)整之后,使程序的靈活性和通用性得到增強,如圖2是船舶海水冷卻系統(tǒng)管路監(jiān)控圖從初始狀態(tài)調(diào)整到最終狀態(tài)的過程。

      圖2 控件由初始狀態(tài)到最終狀態(tài)的調(diào)整過程

      2.3 控件位置保存實現(xiàn)

      通過CRect Tracker類對對象的位置和大小進行調(diào)整之后,必須對對象的狀態(tài)進行保存,否則,在程序關(guān)閉后這些狀態(tài)信息會丟失。因此,應(yīng)該在程序啟動時讀取對象位置和大小并賦予對象,在程序關(guān)閉時將對象的位置和大小信息保存。由于具體調(diào)整的對象不確定,需要對程序中控件進行遍歷??丶奈恢猛ㄟ^二進制文件保存在程序可執(zhí)行文件路徑下,采用二進制方式寫入數(shù)據(jù),可以防止人為修改控件中的狀態(tài)。

      2.3.1 對象狀態(tài)的讀取

      在程序初始化過程中,需要讀取對話框上各個控件的位置,以使各個控件能夠?qū)μ柸胱?重現(xiàn)上次程序關(guān)閉時控件的狀態(tài)。

      2.3.2 對象狀態(tài)的保存

      對象狀態(tài)的保存是狀態(tài)讀取的逆向過程,兩者在流程上大體相同,狀態(tài)保存與狀態(tài)讀取的主要區(qū)別是:(1)二進制文件的屬性中要加入mode-Create,在程序第一次運行時沒有所需要的二進制文件存在,可以創(chuàng)建二進制文件。(2)將文件讀改成文件寫。讀取文件時是將文件中保存的狀態(tài)信息賦予指定ID號的控件,而寫文件是將控件的ID號和該控件的狀態(tài)信息寫入到文件中。

      2.4 儀表參數(shù)顯示的實現(xiàn)

      儀表參數(shù)顯示根據(jù)不同的儀表類型有不同的實現(xiàn)方式,如轉(zhuǎn)速表的示值方式是通過儀表指針旋轉(zhuǎn),溫度表的示值方式是液面的升降,其他開關(guān)量監(jiān)控的儀表如閥門和液壓管路則是顏色的切換。為了讀取方便,具有非開關(guān)量顯示的儀表還需要搭配一個類似數(shù)碼管的數(shù)值顯示器。

      2.4.1 指針的實現(xiàn)

      在儀表盤上實現(xiàn)指針,首先必須獲得儀表盤容器控件的dc(設(shè)備上下文指針),并使用該指針調(diào)用CDC類的MoveTo和LineTo繪制儀表的指針(如圖3)。

      圖3 指針實現(xiàn)流程

      2.4.2 開關(guān)狀態(tài)的實現(xiàn)

      開關(guān)狀態(tài)的實現(xiàn)方法很多,可以使用窗體的Show Window函數(shù)使控件顯示和隱藏,也可以使用Load Bitmap函數(shù)改變?nèi)萜鲀?nèi)的圖片來實現(xiàn)狀態(tài)切換。本程序中用到的狀態(tài)指示燈的切換和開關(guān)動作的效果圖(如圖4)。

      圖4 開關(guān)量實現(xiàn)效果圖

      3 結(jié)束語

      本文提出的基于Visual C++編程平臺的監(jiān)控與報警系統(tǒng)儀表界面實現(xiàn)的方法,達到了交互友好、簡單、直觀、便于修改等優(yōu)點。在程序編制過程中:(1)采用了大量的真彩儀表圖片,使儀表表現(xiàn)更加真實,突破了常見組態(tài)軟件僅求象形的局限;(2)使用CRgn類,實現(xiàn)了圖片與圖片容器的無縫連接,使對象在加入到程序界面中后沒有突兀感,與界面融為一體;(3)使用CRect Tracker類實現(xiàn)了控件的在線、實時調(diào)整,增強了程序的可定制性和靈活性。

      圖5 電站監(jiān)控與冷卻系統(tǒng)監(jiān)控效果圖

      通過以上步驟,最終達到了比較滿意的效果(如圖5)?;赩isual C++編程平臺的測控系統(tǒng)儀表界面實現(xiàn)的方法,在實船的機艙監(jiān)視與報警系統(tǒng)以及仿真等工作中相對于組態(tài)軟件具有一定的優(yōu)越性。

      [1]歐金成,歐世樂,林德杰,彭備戰(zhàn).組態(tài)軟件的現(xiàn)狀與發(fā)展[J].工業(yè)控制計算機,2002,(4):1-5.

      [2]李世臣,徐善林.船舶機艙自動化[M].大連:大連海事出版社,2012:111.

      10.3969/j.issn.1672-9846.2014.01.020

      U665.26

      A

      1672-9846(2014)01-0082-03

      2013-12-10

      師光飛(1979-),男,湖北武漢人,武漢交通職業(yè)學(xué)院航海學(xué)院教師,主要從事船舶電氣與自動化研究。

      曠玉芬(1988-),女,湖北武漢人,武漢理工大學(xué)碩士研究生,主要從事船舶流場的研究工作。

      代 建(1985-),男,湖北孝感人,武漢理工大學(xué)碩士研究生,主要從事艦船電力推進及其自動化技術(shù)研究。

      張道發(fā)(1982-),男,湖北宜昌人,長江宜昌航道局工程師,主要從事航運工程研究。

      猜你喜歡
      控件組態(tài)儀表
      ◆ 儀表
      ◆ 儀表
      儀表
      基于PLC及組態(tài)技術(shù)的恒溫控制系統(tǒng)開發(fā)探討
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      基于PLC和組態(tài)的智能電動擰緊系統(tǒng)
      PLC組態(tài)控制在水箱控制系統(tǒng)的應(yīng)用
      鑄造行業(yè)三維組態(tài)軟件的應(yīng)用
      Microchip推出全新零漂移儀表放大器
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      德阳市| 沙坪坝区| 钟山县| 固镇县| 高青县| 阜南县| 定襄县| 庆元县| 云浮市| 昌邑市| 武强县| 比如县| 昌乐县| 佳木斯市| 贵德县| 新巴尔虎左旗| 北京市| 通江县| 云梦县| 吉木乃县| 尤溪县| 吐鲁番市| 郯城县| 左贡县| 巍山| 松江区| 北碚区| 聂拉木县| 通辽市| 福鼎市| 凭祥市| 延川县| 宁夏| 盐山县| 宁晋县| 宁都县| 平南县| 宜君县| 金阳县| 炎陵县| 中牟县|