999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Windows操作系統的通用狀態指示器設計

2018-03-21 09:07:44張翔宇蔡文齋劉劍鋒
電子技術與軟件工程 2018年2期

張翔宇 蔡文齋 劉劍鋒

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

【關鍵詞】狀態指示器 標簽組件 形狀組件 圖形組件 協議

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

本文試圖針對形式各異的通訊協議,設計一種在Windows操作系統下的通用狀態指示器,以節省大量的代碼工作量,提高程序開發效率。

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

1 狀態指示器基本內容

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

狀態指示器經常使用可視組件的標簽組件、形狀組件、圖形組件來表達。本文使用這三種可視組件制作了4個通用函數來表達工程中各種狀態指示問題。其中,3個函數用于各種“2值”邏輯狀態指示問題,1個函數用于各種告警級別邏輯指示問題。

1.1 “2值”邏輯問題

狀態輸入參數值為典型的“2值”邏輯問題。例如,為0代表正常,為1代表異常。

1.2 告警級別邏輯問題

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

1.3 其它問題

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

2 通用狀態指示器函數設計

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

下面以標簽組件Tlabel作為例說明該通用函數形式化參數設計方法。狀態輸入參數為1字節,表示8個指示狀態,該函數調用后同時處理8個狀態指示,狀態信息級別參數表達在異常情況下告警級別。部分代碼段為:

Procedure DisplayLableLamp(

InputB:Byte;//輸入字節

Modellevel:Byte;//狀態信息級別

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 調用方法

3.1 參數賦值

函數寫為動態數組引入參數形式,在實際使用時,工程開發者首先預留出實際調用實參接口,在調用函數前,首先依據具體工程的協議定義賦值實參變量,將界面對應的標簽或者形狀組件名賦給對應實參變量。

因為函數與開發界面無關,所以在真實調用函數前,才知道哪個指示等代表哪個實體標簽組件或者形狀組件。

3.2 調用代碼

下面為一段真實調用的例子代碼。

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

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 調用按鈕,在實際調用前依據通信協議及界面元素名稱賦值給公用變量。

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

Shape[1]:= Shape2;

......

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

RzLabel[1]:=RzLabel25;

......

inputB:=RzNumericEdit1.IntValue;//測試輸入數據,或者協議中某狀態字節輸入變量。

Modellevel:=ModellevelByte;//狀態信息級別

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;//測試前景色設置

FrontColor[1]:=RzColorComboBox2.SelectedColor;

.......

BackColor[0]:=RzColorComboBox9.SelectedColor;

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

......

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

PenColor[1]:=RzColorComboBox18.SelectedColor;

......

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

PenErrColor[1]:=RzColorComboBox26.SelectedColor;

......

//----------調用函數---------------------

DisplayLableLamp(InputB,

Modellevel,

RzLabel,

BackColor,

FrontColor,

PenColor,

PenErrColor,

Visible,

OKCaption,

ErrorCaption);

end;

3.3 標簽可視化處理

函數參數為動態數組,每一個輸入字節位都對應一個參數值。實際調用時同時控制8個狀態指示。每一個都可以單獨設置表現效果。

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

4 調試樣例編程

為了調試出這個通用函數,設計了一個專用調試界面,通過界面按位輸入組件及其它輸入參數設置可以調出各種指示效果。在應用程序界面設計前,就可以給出各種未來指示效果,這樣在應用程序開發時就提前設計出了實際效果。圖1為某天線伺服控制的監控程序中某8個狀態指示位調用例子效果。

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

形狀與圖形函數(應用Timage組件和Tshape組件)同理。

5 結語

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

應用其它語言開發時,如果使用該方法設計出相似的功能函數同樣可以解決各種狀態指示問題,構造的通用函數可在多個工程項目中使用。這將節約大量有關狀態指示需要處理的代碼段編程,大幅提升編程效率。

參考文獻

[1]蔡文齋.實時監控程序的實驗室快速調試開發[J].計算機與網絡,2015(02):58-62.

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

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

[4]蔡文齋,王錄選.跟蹤、隨動系統監控軟件設計[J].現代電子技術,2007(03):29-31.

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

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

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

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

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

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

作者簡介

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

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

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

作者單位

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

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

主站蜘蛛池模板: 亚洲一本大道在线| 91在线免费公开视频| 福利小视频在线播放| 中文字幕精品一区二区三区视频| 欧美视频在线观看第一页| 亚洲人成影视在线观看| 亚洲国产精品VA在线看黑人| 国产主播福利在线观看| 美女一级免费毛片| 国产av一码二码三码无码| 国产欧美高清| 国产精品久线在线观看| 国产电话自拍伊人| 特级aaaaaaaaa毛片免费视频| 久久semm亚洲国产| 三区在线视频| 日韩精品成人在线| 国产成人8x视频一区二区| 四虎永久在线视频| 国产69精品久久久久孕妇大杂乱| a级高清毛片| 无码'专区第一页| 免费女人18毛片a级毛片视频| 波多野结衣无码中文字幕在线观看一区二区 | 亚洲欧美一区二区三区蜜芽| 欧美国产在线看| 中文字幕亚洲综久久2021| 五月婷婷亚洲综合| 成人欧美在线观看| 久久久久免费看成人影片| 国产美女91视频| 97视频在线精品国自产拍| a级毛片网| 激情综合网址| av大片在线无码免费| 国产欧美日韩专区发布| 国产高清自拍视频| 国产aⅴ无码专区亚洲av综合网| 国产亚洲成AⅤ人片在线观看| 国产成人凹凸视频在线| 国产精品成人不卡在线观看 | av尤物免费在线观看| 国产成人精彩在线视频50| 精品国产网| 久久窝窝国产精品午夜看片| 亚洲V日韩V无码一区二区| 亚洲美女一区二区三区| 精品国产欧美精品v| 国产嫖妓91东北老熟女久久一| 欧美国产在线看| 久久黄色一级视频| 免费看av在线网站网址| 国产精品极品美女自在线网站| 日韩黄色大片免费看| 国产精品亚洲五月天高清| 毛片网站在线看| 亚洲国产日韩在线成人蜜芽| 欧美不卡视频在线| 亚洲女同一区二区| 久久青青草原亚洲av无码| 欧美特级AAAAAA视频免费观看| 亚洲综合色在线| 欧洲av毛片| 日韩精品毛片| 中文精品久久久久国产网址 | 国产亚洲欧美在线中文bt天堂| 激情爆乳一区二区| 2048国产精品原创综合在线| 99精品热视频这里只有精品7| 99青青青精品视频在线| 欧美精品亚洲精品日韩专区| 国产在线视频自拍| 91午夜福利在线观看精品| 中文字幕久久精品波多野结| 老司国产精品视频91| 喷潮白浆直流在线播放| 国产精品美人久久久久久AV| 久久综合丝袜长腿丝袜| 91九色视频网| 毛片网站在线播放| 在线观看国产网址你懂的| 亚洲欧美自拍一区|