• 
    

    
    

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

      基于Windows操作系統(tǒng)的通用狀態(tài)指示器設(shè)計

      2018-03-21 09:07:44張翔宇蔡文齋劉劍鋒
      電子技術(shù)與軟件工程 2018年2期
      關(guān)鍵詞:協(xié)議

      張翔宇 蔡文齋 劉劍鋒

      摘 要 本文設(shè)計了數(shù)個通用狀態(tài)指示函數(shù),用于解決Windows環(huán)境下應(yīng)用程序中各種狀態(tài)指示問題。這些函數(shù)利用界面可視組件設(shè)計,包含各種狀態(tài)指示所需的參數(shù)并使用變體數(shù)組類型作為輸入。定義了一組公有數(shù)據(jù)數(shù)組作為函數(shù)與實際工程應(yīng)用的內(nèi)存交換區(qū),調(diào)用前將界面元素及協(xié)議提示信息傳遞給該交換區(qū),以便于多次調(diào)用時調(diào)用方式一致。設(shè)計了可視條件參數(shù),該參數(shù)可控制狀態(tài)指示個數(shù)。設(shè)計了一款調(diào)用函數(shù)的調(diào)試程序,能在實際工程函數(shù)調(diào)用前給出調(diào)用效果。以上函數(shù)可結(jié)合具體工程項目通信協(xié)議快速調(diào)用,從而提高開發(fā)者效率。

      【關(guān)鍵詞】狀態(tài)指示器 標(biāo)簽組件 形狀組件 圖形組件 協(xié)議

      任何控制類或相關(guān)應(yīng)用項目軟件開發(fā)時,都會遇到這樣的問題:在通訊協(xié)議中,使用某些字節(jié)表示狀態(tài)變化。這樣的狀態(tài)表示字節(jié)在通訊協(xié)議中可能占幾個字節(jié),字節(jié)中每一位代表一種狀態(tài)。每個字節(jié)就可代表8個具體物理參數(shù)狀態(tài)。在工程項目中,假定通信協(xié)議中有7個狀態(tài)字節(jié),那么就有7*8=56種狀態(tài)指示,這就需要設(shè)計并制作出這56個狀態(tài)指示圖標(biāo)。并以不同的顏色表示相應(yīng)的狀態(tài)(例如,綠色代表正常,紅色代表異常)。當(dāng)工程項目改變后,通訊協(xié)議隨之發(fā)生變化。開發(fā)者則又要依據(jù)工程要求編寫大量的狀態(tài)指示代碼。

      本文試圖針對形式各異的通訊協(xié)議,設(shè)計一種在Windows操作系統(tǒng)下的通用狀態(tài)指示器,以節(jié)省大量的代碼工作量,提高程序開發(fā)效率。

      現(xiàn)代的開發(fā)工具中,可視化狀態(tài)指示組件較多,本文以Rad Studio XE10.0中的Delphi語言為例展開討論。

      1 狀態(tài)指示器基本內(nèi)容

      狀態(tài)指示器通常情況下信息表示應(yīng)該為:狀態(tài)輸入值、告警信息級別、告警指示形狀、背景顏色、前景顏色、字體前景顏色、字體背景顏色、可視性控制變量等。

      狀態(tài)指示器經(jīng)常使用可視組件的標(biāo)簽組件、形狀組件、圖形組件來表達(dá)。本文使用這三種可視組件制作了4個通用函數(shù)來表達(dá)工程中各種狀態(tài)指示問題。其中,3個函數(shù)用于各種“2值”邏輯狀態(tài)指示問題,1個函數(shù)用于各種告警級別邏輯指示問題。

      1.1 “2值”邏輯問題

      狀態(tài)輸入?yún)?shù)值為典型的“2值”邏輯問題。例如,為0代表正常,為1代表異常。

      1.2 告警級別邏輯問題

      該信息為多值邏輯問題,例如表示天氣狀況的指示問題,“0”代表晴天,“1”代表小雨,“2”代表中雨,“3”代表大雨等。在這種邏輯下,雨天表示方法就要使用不同顏色。

      1.3 其它問題

      在使用形狀組件和圖形組件作指示器時,函數(shù)參數(shù)中啞元應(yīng)為:狀態(tài)輸入?yún)?shù)、形狀參數(shù)、狀態(tài)指示前景顏色、狀態(tài)指示背景顏色,應(yīng)具備可視控制參數(shù)。如果帶Hit支持功能(當(dāng)鼠標(biāo)移動到這個圖形時能夠自動指示)則應(yīng)該設(shè)計正確指示標(biāo)題、錯誤指示標(biāo)題。

      2 通用狀態(tài)指示器函數(shù)設(shè)計

      共設(shè)計三個函數(shù)。此三個函數(shù)形式相仿,分別使用Timage組件、Tshape組件和Tlabel組件作為界面可視組件表示狀態(tài)指示,其中輸入字節(jié)表示一次性處理8種狀態(tài),所以其它啞元參數(shù)為動態(tài)指針型。

      下面以標(biāo)簽組件Tlabel作為例說明該通用函數(shù)形式化參數(shù)設(shè)計方法。狀態(tài)輸入?yún)?shù)為1字節(jié),表示8個指示狀態(tài),該函數(shù)調(diào)用后同時處理8個狀態(tài)指示,狀態(tài)信息級別參數(shù)表達(dá)在異常情況下告警級別。部分代碼段為:

      Procedure DisplayLableLamp(

      InputB:Byte;//輸入字節(jié)

      Modellevel:Byte;//狀態(tài)信息級別

      RzLabel:Array of TRzLabel;//界面可視組件

      BackColor:Array of TColor;//背景顏色

      FrontColor:Array of TColor;//前景顏色

      PenColor:Array of TColor;//字體前景顏色

      PenErrColor:Array of TColor;//字體背景顏色

      Visible:Array of Boolean;//可視性控制變量

      OKCaption:Array of String;//正確提示字符串

      ErrorCaption:Array of String);//異常告警提示字符串

      來一段實際代碼,判斷輸入某位為1或者0時的處理。

      var

      i:integer;

      begin

      if (InputB and $01)=$01 then

      begin

      RzLabel[0].Color:=FrontColor[0];

      RzLabel[0].caption:=OKCaption[0];

      RzLabel[0].Font.Color:=PenColor[0];

      end

      else

      begin

      Case Modellevel of

      0:begin

      RzLabel[0].Color:=BackColor[0];

      RzLabel[0].caption:=ErrorCaption[0];

      RzLabel[0].Font.Color:=PenErrColor[0];

      end;

      ......//其它情況處理代碼略。

      end;

      ......//其它位處理代碼略。

      end;

      For I:=0 To 7 do

      RZlabel[i].visible:=visible0[i];//可視性控制。

      3 調(diào)用方法

      3.1 參數(shù)賦值

      函數(shù)寫為動態(tài)數(shù)組引入?yún)?shù)形式,在實際使用時,工程開發(fā)者首先預(yù)留出實際調(diào)用實參接口,在調(diào)用函數(shù)前,首先依據(jù)具體工程的協(xié)議定義賦值實參變量,將界面對應(yīng)的標(biāo)簽或者形狀組件名賦給對應(yīng)實參變量。

      因為函數(shù)與開發(fā)界面無關(guān),所以在真實調(diào)用函數(shù)前,才知道哪個指示等代表哪個實體標(biāo)簽組件或者形狀組件。

      3.2 調(diào)用代碼

      下面為一段真實調(diào)用的例子代碼。

      //-----------公用變量-------------------

      Shape:Array[0..7] of TShape;

      RzLabel:Array[0..7] of TRzLabel;

      BackColor:Array[0..7] of TColor;

      FrontColor:Array[0..7] of TColor;

      PenColor:Array[0..7] of TColor;

      PenErrColor:Array[0..7] of TColor;

      Visible0:Array[0..7] of Boolean;

      OKCaption:Array[0..7] of String;

      ErrorCaption:Array[0..7] of String;

      begin

      //CALL 調(diào)用按鈕,在實際調(diào)用前依據(jù)通信協(xié)議及界面元素名稱賦值給公用變量。

      Shape[0]:= Shape1;//實際形狀組件

      Shape[1]:= Shape2;

      ......

      RzLabel[0]:=RzLabel24;//實際標(biāo)簽組件,界面元素

      RzLabel[1]:=RzLabel25;

      ......

      inputB:=RzNumericEdit1.IntValue;//測試輸入數(shù)據(jù),或者協(xié)議中某狀態(tài)字節(jié)輸入變量。

      Modellevel:=ModellevelByte;//狀態(tài)信息級別

      Visible0[0]:=RzCheckBox9.Checked;//測試可視控制組件,

      Visible0[1]:=RzCheckBox10.Checked;

      ......

      OKCaption[0]:=RzEdit1.Text;//測試正確提示

      OKCaption[1]:=RzEdit2.Text;

      ......

      ErrorCaption[0]:=RzEdit9.Text;//測試異常提示

      ErrorCaption[1]:=RzEdit10.Text;

      ......

      FrontColor[0]:=RzColorComboBox1.SelectedColor;//測試前景色設(shè)置

      FrontColor[1]:=RzColorComboBox2.SelectedColor;

      .......

      BackColor[0]:=RzColorComboBox9.SelectedColor;

      BackColor[1]:=RzColorComboBox10.SelectedColor;//測試背景色設(shè)置

      ......

      PenColor[0]:=RzColorComboBox17.SelectedColor;//測試字體前景顏色設(shè)置

      PenColor[1]:=RzColorComboBox18.SelectedColor;

      ......

      PenErrColor[0]:=RzColorComboBox25.SelectedColor;//測試字體背景

      PenErrColor[1]:=RzColorComboBox26.SelectedColor;

      ......

      //----------調(diào)用函數(shù)---------------------

      DisplayLableLamp(InputB,

      Modellevel,

      RzLabel,

      BackColor,

      FrontColor,

      PenColor,

      PenErrColor,

      Visible,

      OKCaption,

      ErrorCaption);

      end;

      3.3 標(biāo)簽可視化處理

      函數(shù)參數(shù)為動態(tài)數(shù)組,每一個輸入字節(jié)位都對應(yīng)一個參數(shù)值。實際調(diào)用時同時控制8個狀態(tài)指示。每一個都可以單獨(dú)設(shè)置表現(xiàn)效果。

      下面說明如果應(yīng)用監(jiān)控程序中只有22種狀態(tài)指示時如何調(diào)用函數(shù)的方法。注意該函數(shù)每次處理8個狀態(tài),可視性控制變量控制到底有幾個顯示。這樣,當(dāng)只有22位狀態(tài)時,函數(shù)仍處理為24個狀態(tài)指示,開發(fā)者需要在界面上放置24個可視組件,調(diào)用時將2個多余的可視組件Visible參數(shù)設(shè)置為假,這樣界面上就只顯示22個狀態(tài)指示。這樣,在工程應(yīng)用中,無論多少狀態(tài)指示問題,都可以用這一個函數(shù)統(tǒng)一方法處理,不過是多次調(diào)用而已。

      4 調(diào)試樣例編程

      為了調(diào)試出這個通用函數(shù),設(shè)計了一個專用調(diào)試界面,通過界面按位輸入組件及其它輸入?yún)?shù)設(shè)置可以調(diào)出各種指示效果。在應(yīng)用程序界面設(shè)計前,就可以給出各種未來指示效果,這樣在應(yīng)用程序開發(fā)時就提前設(shè)計出了實際效果。圖1為某天線伺服控制的監(jiān)控程序中某8個狀態(tài)指示位調(diào)用例子效果。

      這三個通用函數(shù)解決了各種狀態(tài)指示問題,特別是使用Tshape和Timage時可以制作為狀態(tài)各異的效果。如果希望作出更專業(yè)的效果,可以將這些組件換成專業(yè)的第三方組件包中的相應(yīng)組件。例如Raize組件包等,這樣制作出的狀態(tài)指示將會更酷炫。

      形狀與圖形函數(shù)(應(yīng)用Timage組件和Tshape組件)同理。

      5 結(jié)語

      本文介紹了使用Delphi XE10開發(fā)工具設(shè)計的一套狀態(tài)指示統(tǒng)一函數(shù)處理方法,與具體控制工程項目無關(guān)。在實際使用中,結(jié)合具體控制項目協(xié)議定義,只需賦值各參數(shù)與界面元素一致。調(diào)用時自動給出效果,這種處理方法解決了所有這一類問題。本文給出的調(diào)用例子可以給出每一位的表現(xiàn)效果,在正式開發(fā)程序之前,就可以提前看到執(zhí)行效果并觀察各種字體、配色等是否合適。

      應(yīng)用其它語言開發(fā)時,如果使用該方法設(shè)計出相似的功能函數(shù)同樣可以解決各種狀態(tài)指示問題,構(gòu)造的通用函數(shù)可在多個工程項目中使用。這將節(jié)約大量有關(guān)狀態(tài)指示需要處理的代碼段編程,大幅提升編程效率。

      參考文獻(xiàn)

      [1]蔡文齋.實時監(jiān)控程序的實驗室快速調(diào)試開發(fā)[J].計算機(jī)與網(wǎng)絡(luò),2015(02):58-62.

      [2]蔡文齋.全抽象監(jiān)控軟件實現(xiàn)[J].飛行器測控學(xué)報,2009(04):65-68.

      [3]王艷平(著).Windows網(wǎng)絡(luò)與通信程序設(shè)計(第2版)[M].北京:人民郵電出版社,2009(01):203-210.

      [4]蔡文齋,王錄選.跟蹤、隨動系統(tǒng)監(jiān)控軟件設(shè)計[J].現(xiàn)代電子技術(shù),2007(03):29-31.

      [5]周愛民(著).Delphi源代碼分析[M].北京:電子工業(yè)出版社,2004(09):193-205.

      [6]蘇春曉,王鵬.基于網(wǎng)絡(luò)的數(shù)字示波器遠(yuǎn)程集中軟件平臺[J].太赫茲科學(xué)與電子信息學(xué)報,2014,12(06):884-889.

      [7]趙曉玲(著).可視化程序設(shè)計—Delphi [M].北京:機(jī)械工業(yè)出版社,2005(01):251-258.

      [8]周愛民(著).Delphi源代碼分析[M].北京:電子工業(yè)出版社,2004(09):193-205.

      [9]Jeffrey Richter(著),王書洪,劉光明(譯).Windows高級編程指南(第3版)[M].北京:清華大學(xué)出版社,1999(01):263-269.

      [10]朱漢民(著).Delphi7高級應(yīng)用開發(fā)教程[M].北京:科學(xué)出版社,2006(01):215-218.

      作者簡介

      張翔宇(1983-),河北省秦皇島市人。碩士學(xué)位。工程師。主要研究方向為遙感信息接收與處理、計算機(jī)仿真等。

      蔡文齋(1962-),陜西省西安市人。工程碩士。高級工程師。主要研究方向為航天測控工程開發(fā)研究、工程控制類應(yīng)用開發(fā)研究,軟件測試等。

      劉劍鋒(1972-),黑龍江省綏化市人。博士學(xué)歷。高級工程師。主要研究方向為航天測控工程開發(fā)研究,遙感信息處理等。

      作者單位

      1.北京市遙感信息研究所 北京市 100011

      2.中國電子科技集團(tuán)公司第39研究所 陜西省西安市 710065

      猜你喜歡
      協(xié)議
      基于云的高校計算機(jī)機(jī)房的設(shè)計研究
      基于數(shù)字化變電站SV報文通信可靠性問題研究
      基于IATAHost—To—Host協(xié)議的GDS互聯(lián)適配器設(shè)計
      Modbus設(shè)備在機(jī)房溫度監(jiān)控系統(tǒng)中的應(yīng)用
      負(fù)面清單的管理研究
      中國市場(2016年36期)2016-10-19 04:20:43
      對無線傳感器網(wǎng)絡(luò)MAC層協(xié)議優(yōu)化的研究與設(shè)計
      科技視界(2016年22期)2016-10-18 15:25:08
      基于對等網(wǎng)協(xié)議的BotNet 防御系統(tǒng)的設(shè)計
      PKI技術(shù)在SSLVPN中的應(yīng)用
      挪用還是貪污
      《網(wǎng)絡(luò)原理》課程中協(xié)議可靠性探討
      望城县| 浠水县| 潢川县| 乌拉特后旗| 井研县| 桓台县| 德阳市| 连南| 天镇县| 开江县| 河间市| 鹰潭市| 盈江县| 汤阴县| 内黄县| 龙川县| 五大连池市| 合川市| 台安县| 微博| 合阳县| 平乐县| 泊头市| 灌南县| 平南县| 金平| 宝应县| 丰台区| 东莞市| 云浮市| 崇义县| 开封市| 项城市| 康平县| 金溪县| 平塘县| 阿城市| 桂平市| 隆尧县| 闽侯县| 镇安县|