亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于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)指示。每一個都可以單獨設(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)指示需要處理的代碼段編程,大幅提升編程效率。

        參考文獻

        [1]蔡文齋.實時監(jiān)控程序的實驗室快速調(diào)試開發(fā)[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].北京:機械工業(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é)位。工程師。主要研究方向為遙感信息接收與處理、計算機仿真等。

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

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

        作者單位

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

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

        猜你喜歡
        協(xié)議
        基于云的高校計算機機房的設(shè)計研究
        基于數(shù)字化變電站SV報文通信可靠性問題研究
        基于IATAHost—To—Host協(xié)議的GDS互聯(lián)適配器設(shè)計
        Modbus設(shè)備在機房溫度監(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é)議可靠性探討
        那有一级内射黄片可以免费看| 亚洲天堂av社区久久| 八区精品色欲人妻综合网| 久久精品国产精品亚洲毛片| 国产精品亚洲A∨天堂不卡| 国产成人久久精品亚洲小说| 色婷婷一区二区三区四区| 久久五月精品中文字幕| 蜜桃在线高清视频免费观看网址| 虎白m粉嫩小在线播放| 日本最新免费二区| 亚洲精品午睡沙发系列| 中文字幕亚洲无线码| 在线精品无码一区二区三区| 中文字幕人妻系列一区尤物视频| 精品国产一区二区三区毛片| 亚洲白嫩少妇在线喷水 | 成人午夜福利视频镇东影视| 国产精品麻豆成人av电影艾秋 | 国产精品无需播放器| 亚洲先锋影院一区二区| 久久亚洲精品一区二区三区| 色吧噜噜一区二区三区| 亚洲日韩国产av无码无码精品| 亚洲中文字幕久在线| 老太脱裤让老头玩ⅹxxxx| 最新永久免费AV网站| 口爆吞精美臀国产在线| 国产在线一区二区三精品乱码| 放荡的少妇2欧美版| 玩弄放荡人妻少妇系列| 一本久道久久综合婷婷五月| 亚洲欧洲综合有码无码| 成人av一区二区三区四区| 国产精品沙发午睡系列| 亚洲成在人线av品善网好看| 一本大道久久香蕉成人网| 欧洲亚洲第一区久久久| 一本久久a久久精品综合| 亚洲国产精品av麻豆网站| 亚洲色大成网站www永久|