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

基于PhAB的圖形控制界面設計

2010-04-12 00:00:00胡大斌
現代電子技術 2010年4期

摘 要:介紹在QNX實時操作系統圖形界面開發環境PhAB下的軟件設計特點。結合船舶動力裝置控制系統的具體要求,從界面繪制、資源設置和函數調用等三個方面對船舶動力裝置控制系統圖形控制界面和程序進行設計,闡述設計特點,探索在PhAB下圖形界面設計的一般方法。對在QNX下圖形界面的設計開發具有一定的指導意義。經測試運行,設計系統能滿足控制要求。

關鍵詞:PhAB;船舶動力裝置;圖形界面;控件

中圖分類號:TP274文獻標識碼:B

文章編號:1004-373X(2010)04-148-04

Design of Graphical Interface Based on PhAB

SHI Feng,HU Dabin,XIA Ji

(College of Naval Architecture and Power,Naval University of Engineering,Wuhan,430033,China)

Abstract:The characteristics of software design in QNX RTOS′s photon application builder(PhAB) are described.Combined with detail requirements of control system on marine power,the photon interface and program of this system are designed with interface mapping,resource setting and function callbacks.The characters of the design are described,and the general methods of interface design under PhAB are discussed.The idea of designing has certain significance for the graphical interface design under QNX RTOS.After testing and running,the design system can satisfy the control requirement.

Keywords:PhAB;marine power device;graphical interface;control

0 引 言

在工業控制特別是較復雜的工業控制領域,由于被控對象的多樣化和控制邏輯的復雜性,各種傳統的控制方式逐漸被計算機控制所替代。一個完整的計算機控制系統分為硬件和軟件兩個部分,而計算機控制的最大特點就是可以在相同的硬件條件下通過設計不同的控制軟件完成各類控制要求。計算機操作系統分為分時和實時兩種,兩類操作系統在計算機控制領域中都有應用。但由于分時操作系統本身的通用性特點,穩定性和可靠性不高,在工作環境惡劣,可靠性要求高的系統中很少采用。實時操作系統是一類更適合于控制的計算機操作系統,相比于分時操作系統,實時操作系統大多擁有微內核,并且通過對結果返回的時間限制來實現程序運行的可預測性,因此具有較高的穩定性和可靠性[1]。近年來,隨著實時操作系統在一些可靠性和實時性要求較高的領域的成功應用,實時操作系統得以快速發展,為適應硬件的發展和用戶的需求,各大實時系統開發商都開發出適合本系統的圖形控制界面,如VxWorks的WindML和QNX的PhAB[2-5]。本文在某型船舶動力裝置控制系統設計中,以實時操作系統QNX作為開發平臺,研究在QNX圖形界面開發器PhAB界面設計的方法和特點。

1 圖形界面開發環境

PhAB(Photon Application Builder)是QNX集成開發環境(QNX Momentics IDE)的一個部分。PhAB的圖形構建采用分層的方式,而且擁有微內核結構。這使得在PhAB下設計的圖形控制界面不僅占用空間小,而且運行速度塊[6]。

PhAB采用所見即所得的控制界面開發模式。在PhAB中進行界面設計的基本單元是控件(Widget),控件以類的方式定義,控件類的成員叫作控件的資源[7]。控件的資源有兩種分類方式:一種是以C語言的變量名分類的,如長整型,字節型,字符串型等;另一種是以資源的賦值方式不同為依據分類的,如尺寸和顏色資源(Scalar and color resources),字符串資源(String resources),標記資源(Flag resources) 和鏈接資源(Link resources)等。控件類以樹狀排列,并擁有嚴格的父子關系。如圖1所示。

在界面繪制中,控件的創建可以通過在控件框中選取相應控件后直接在界面編輯區域繪制,也可以使用PhAB提供的函數編寫。

2 界面繪制

基于工程應用簡單可靠的原則,在滿足使用要求的條件下,在界面繪制中應選用較為簡單的控件,即盡量選用圖1中靠左邊的控件[8-10]。在PhAB中,任何控件都有從PtWidget控件繼承來的一個位置坐標參數和一個規定控件占用范圍的參數。PhAB將這兩個參數專門在編輯框的左邊顯示,通過設置這兩個參數可以精確設定控件的坐標和在編輯框中占用范圍的大小。

圖1 控件類排列

界面的具體繪制如下:

邊界和輪廓 邊界和輪廓一般都由直線組成,因此選用直線控件(PtLine)繪制。直線控件是圖形控件類(PtGraphic)下的子控件類,除繼承圖形控件類的資源外,直線控件還擁有用于規定直線起始坐標空間的Pt_ARG_ORIGIN資源和用于標記直線起點坐標和終點坐標的Pt_ARG_POINTS資源。在對直線控件進行相關設置時,直線的位置和長度可以通過直接拖動改變,更精確地設定則需要通過改變編輯框左邊的坐標參數和范圍參數確定。線條的顏色和寬度等可以通過對相關資源進行設置來改變,如通過改變Pt_ARG_COLOR資源的參數來改變直線的顏色,通過設置Pt_ARG_LINE_WIDTH資源的參數來改變直線的寬度。PhAB中,控件占用的空間并不僅僅是控件顯示部分的面積,而是一個矩形區域,這個矩形區域將控件的所有顯示部分包含在內。直線控件占用的空間就是以直線的起點和終點為對角的一個矩形區域,這點在對控件背景進行設置和判斷控件的重合中需要考慮到。

顯示框和標識框 顯示框和標識框使用到基本控件(PtBasic)和容器控件(PtContainer)。從圖1中可以看到,基本控件是PhAB中最基礎的可顯示控件,它是其他可顯示控件的總父控件類。除繼承PtWidget的資源外,基礎控件還擁有用于顯示的20多個新資源。如控件顏色資源,控件內部顏色資源和控件邊界資源等。通過對這些資源的配置可以得到不同的顯示效果。

基礎控件在需要對顯示框或標識框填寫標題或設置改變尺寸時的動作時將無法滿足要求,這時需要用到容器控件。

標識和信息顯示 對標識和信息顯示的繪制選用文本控件。系統設計中使用到的兩類文本控件分別是PtText和PtMultiText。PtText是標簽控件類(PtLabel)的子控件類。它對文字的編輯的支持較簡單,僅支持單行文字顯示,而且不能在同一個控件中使用不同的文字字體、字號和顏色等,優點是占用資源少,適合于普通標識性的文字使用場合。在該系統設計中大量用于文字顯示的就是PtText控件。相對而言PtMultiText控件對文字編輯的支持要強大很多,它支持字符的多行顯示,允許對同一控件中的字符進行字符大小、顏色等的編輯,能很好的支持復雜的信息顯示。

閥件等特殊形狀器件 PhAB并不像很多繪圖工具一樣為圖形繪制提供各類通用的規則或不規則的圖形或圖標,因此在繪制特殊形狀的器件圖標時需要使用一個多邊形控件(PtPolygon)對器件圖標進行繪制。多邊形控件是PhAB中功能最強大的控件之一。使用多邊形控件繪制的圖形分兩種:一種是起點和終點重合的(在這種情況下即使繪制的時候沒有將起點和終點連接在一起,系統也會在繪制完成后自動將其重合到一起)多邊形;另一種是起點和終點不重合。 這種起點和終點的是否重合是通過配置對多邊形控件的Pt_ARG_POLYGON_FLAGS標記資源是否有效來實現的。在前面已經提到PhAB控件占用的空間和在界面上顯示的范圍的不一致性,在對多邊形繪制的控件進行配置時,控件的內部是指多邊形各邊圍成的區域,而占用的范圍是一個包含多邊形所有邊在內的矩形。以顏色設置為例,Pt_ARG_FILL_COLOR資源是對整個多邊形占用范圍的顏色進行填充,這塊區域包括但不局限于多邊形內部,填充的是一個矩形;而Pt_ARG_INSIDE_COLOR資源只對多邊形各邊圍成區域的顏色進行填充,并且對多邊形內部顏色的填充會覆蓋對多邊形所屬區域顏色的填充。

控制按鈕 在系統控制界面繪制中需要繪制多種形狀不同的控制按鈕,如控制窗口的打開按鈕、閥件的控制按鈕、被控對象的選取按鈕等。進行這類按鈕繪制的有按鈕控件(PtButton)和按鈕控件的兩個子控件:開關按鈕(PtOnOffButton)和索套按鈕(PtToggleButton)。按鈕的形狀除了可以在控件所給形狀的基礎上修改,還可以通過在按鈕控件的Pt_ARG_LABEL_IMAGE資源中載入或繪制圖形來設定按鈕的外形,在Pt_ARG_ARM_IMAGE資源中載入或繪制圖形來設置按鈕按下時的形狀。因此,通過對按鈕控件相關資源的配置,可以繪制出各種不同效果的按鈕器件。圖2所示即為該系統設計中繪制的不同形狀的按鈕。

圖2 系統中各種形狀按鈕

在系統界面繪制中,當選定多個控件并把他們定義為一個組時,將生成一個新的控件:組控件(PtGroup)。組控件的資源并不是所有組成組控件的控件的相同資源的集合,而是一個獨立的控件。組控件屬于容器控件類的子控件類,除繼承容器控件的資源外,它還新增了十多個用于處理組控件內各控件關系的資源。而且,改變組控件的資源除了能對它內部的成員之間的相互關系進行改變外,不對內部控件本身的特性作任何修改。在某種意義上來說,組控件就是一個規定了里面物品排放方式的容器,改變容器的式樣并不會對里面所裝物品有什么影響。

通過以上對控制界面具體繪制的分析,完成如圖3所示的界面繪制。

3 控件和資源的相關設置

在系統界面的設計中進行的資源設置包括對資源的賦值和獲取資源參數。資源的賦值和參數獲取方式按資源的不同類別有所差別,但使用的函數是相同的。

系統的設計過程中需要在多種情況下對控件資源進行賦值,包括標識按鈕形態,顯示被監測量的狀態和操作過渡狀態的顯示等。對資源賦值的函數有PtSetResource()和PtSetResources(),PtSetResource()用以對控件的單一資源進行賦值,函數定義如下:

int PtSetResource(PtWidget_t *widget,longtype,longvalue,longlen);

其中:*widge表示將要賦值的控件名指針;type表示將要賦值的資源;value和len表示賦值給資源的參數。

對多個資源同時賦值用到的是PtSetResources()函數,PtSetResources()函數要配合PtSetArg()函數一起使用,其中PtSetArg()起到賦值初始化的作用, 函數定義如下:

PtSetArg( PtArg_t *arg,longtype,longvalue,longlen);

圖3 系統控制界面

其中:*arg表示裝載賦值資源的變量的結構體隊列首地址;type表示將要賦值的資源;value和len表示賦值給資源的參數。

int PtSetResources( PtWidget_t *widget,intn_args,PtArg_t const*args);

其中:*widge表示將要賦值的控件名指針;n_args表示同時賦值資源的個數;*args表示裝載賦值資源的變量的結構體隊列首地址。

資源參數的獲取在系統中主要用于讀取監測變量的狀態,讀取資源參數的函數為PtGetResource()和PtGetResources(),使用方法與資源賦值函數類似,因此不再詳細說明。如下為一段以控件資源的賦值和讀取來顯示某控件圖形變化的一段程序:

PtArg_t arg[2];

PhImage_t *image;

PtSetArg(arg[1],Pt_ARG_ARM_IMAGE,image,0);

PtGetResources(ABW_JKA,1,arg[1]);

PtSetArg(arg[1],Pt_ARG_ARM_IMAGE,image,0);

PtSetResources(ABW_ JKB,1,arg[1]);

PtBkgdHandlerProcess();//刷新屏幕

4 控件函數調用

控制系統界面各部分的動作需要通過設計和編寫程序實現。程序與控件的鏈接分兩種情況,一種是通過編寫程序改變控件的某些資源以達到反應被控量狀態的目的,這種情況可以叫作控件的接收信號;另一種是當控件狀態發生變化時,系統將為控件調用與這種變化相對應的鏈接函數,即控件的發出信號。控件的函數調用也屬于控件的一類資源,即上文中提到的鏈接資源(Link Resources)。控件有多種函數調用方式,而且不同控件的可調用方式并不完全相同。下面為系統中用到的幾種通用函數調用方式:

(1) 點擊調用(Activate Callbacks):點擊調用的控件資源是Pt_CB_ACTIVATE。當使用鼠標操作時,鼠標左鍵點擊(一個按下后松開的過程)一個控件時將調用這個資源所鏈接的函數。點擊調用是系統設計中最常用的控件函數調用情況,在系統的關閉、控制命令的發出、參數的顯示等控件設置中都會用到。操作中是需要注意的是在點擊調用的場合,僅按下一個控件并不會調用這個資源的函數,還需要在控件上松開按下的鼠標左鍵。

(2) 按下調用(Arm Callbacks):按下調用的控件資源是Pt_CB_ARM。與點擊調用不同,按下調用函數的鏈接執行只需要鼠標左鍵在控件上按下就可以。按下調用在PhAB中并不只是代表鼠標左鍵對控件的按下,而是控件的一種狀態。以一個PtButton控件為例,當選中它并在鍵盤上按下回車鍵時,控件會經歷一個“彈起-按下-彈起”的過程,這個過程中的“按下”就是表示的按下調用起作用的狀態。而對于一個非按鍵控件來說,它的按下狀態并不一定會在控件的外形上有所表示。

(3) 右鍵按下調用(Menu Callbacks):鼠標右鍵按下調用之所以叫作Menu Callbacks是因為在很多應用中右鍵的按下會出來一個菜單來選擇相應的功能。右鍵按下調用的控件資源為Pt_CB_MENU。它也是所有控件都擁有的一種函數調用方式。

(4) 熱鍵調用(Hotkey Callbacks):熱鍵調用是一種方便的函數調用方式,它的控件資源是Pt_CB_HOTKEY。熱鍵的組成可以是聯合鍵(Alt,Shift,Ctrl)中的一個或幾個加上一個其他鍵,也可以只是一個非聯合鍵。熱鍵調用在當前程序運行中有效。

在控件的調用中,調用的可以不僅是函數,還可以是彈出一個窗口,菜單或者對話框,這些調用要求給出窗口彈出的坐標,彈出方式以及設定相關參數。

5 結 語

所設計圖形控制界面系統運行于VP9 型單板機和AVME9668+IP408信號采集模塊的VME總線下。長時間的調試運行表明,本文所設計的基于PhAB的圖形控制軟件運行穩定、可靠,實現了系統功能,達到了既定要求。

參考文獻

[1]鄭澤勝.嵌入式系統以及實時軟件開發[EB/OL].http://www.pocketix.com,2009.

[2]張義中.Unix平臺下C語言高級編程指南[M].北京:北京希望電子出版社,2000.

[3]Arnold Berger.嵌入式系統設計[M].呂駿,譯.北京:電子工業出版社,2002.

[4]劉海燕,邵立嵩,荊濤.Linux系統應用與開發教程[M].北京:機械工業出版社,2007.

[5]侯業勤,張菁.分布式嵌入式實時操作系統QNX[M].北京:中國宇航出版社,1999.

[6]QNX官方網站.Qnx Software Systems Ltd[EB/OL].http://www.qnx.com,2009.

[7]曹冰冰.基于QNX實時操作系統的測試系統的開發[D].西安:西北工業大學,2002.

[8]陳曉剛,嚴丹.基于QNX操作系統的高可靠性應用軟件框架[J].工業控制計算機,2008,21(2):48-51.

[9]吳勇,傅鵬,蘭魯光.基于QNX的實時數據采集系統[J].微計算機信息,2006,22(2):63-64.

[10]王冬霞,王茂,單家方.基于QNX的分布式采集控制系統[J].核聚變與等離子體物理,2007,27(4):334-338.

主站蜘蛛池模板: 国产又粗又爽视频| 国语少妇高潮| 国产成人无码久久久久毛片| 成人国产精品2021| 久久久久无码精品| 91精品小视频| 伊人久久大香线蕉aⅴ色| 97视频精品全国免费观看| 国产精品部在线观看| 欧美精品影院| 国产精品视频导航| 67194成是人免费无码| 在线看片免费人成视久网下载| 伊人久久精品亚洲午夜| 在线视频精品一区| 国产另类视频| 米奇精品一区二区三区| 色色中文字幕| 亚洲天堂高清| 欧美在线视频不卡| 丁香婷婷久久| 日本三级欧美三级| 国产精品自拍合集| 人妻中文久热无码丝袜| 日本www在线视频| 人人91人人澡人人妻人人爽 | 欧美激情视频一区| 欧美中文字幕一区| 精品一区二区三区自慰喷水| 青青青视频蜜桃一区二区| 伊伊人成亚洲综合人网7777| 在线免费观看AV| 国产精品网曝门免费视频| 特级aaaaaaaaa毛片免费视频 | 播五月综合| 最近最新中文字幕免费的一页| 国产精品毛片一区视频播| 欧美第二区| 亚洲无码精品在线播放| 久久婷婷综合色一区二区| 亚洲福利一区二区三区| 国产内射在线观看| www欧美在线观看| h视频在线播放| 国产成人永久免费视频| 欧美成人二区| 国产在线视频欧美亚综合| 中文字幕亚洲另类天堂| 中文字幕1区2区| 亚洲成人在线网| 国产又大又粗又猛又爽的视频| 国产麻豆91网在线看| 亚洲精品无码成人片在线观看| 露脸真实国语乱在线观看| 日韩国产黄色网站| 亚洲国产高清精品线久久| 永久成人无码激情视频免费| 制服丝袜无码每日更新| 午夜免费视频网站| 波多野结衣的av一区二区三区| 亚洲福利网址| 99热这里只有精品5| 欧美日本二区| 亚洲天堂久久| 欧美日韩一区二区在线免费观看| 久久大香伊蕉在人线观看热2| 久久国产乱子伦视频无卡顿| 欧美一级专区免费大片| 福利一区在线| 欧美另类图片视频无弹跳第一页| 国产剧情无码视频在线观看| 国产成人免费视频精品一区二区| 午夜色综合| yjizz视频最新网站在线| 亚洲三级影院| 日本高清有码人妻| 日韩精品一区二区三区免费| www.亚洲一区| 天堂网亚洲系列亚洲系列| 久久久久国产一区二区| 天天摸天天操免费播放小视频| 国产欧美视频在线观看|