www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]Windows Embedded 做為嵌入式系統(tǒng)(包含 Windows CE),實(shí)際實(shí)用的領(lǐng)域還是很多的,例如:(1)(工業(yè))控制(2)醫(yī)療(3)瘦客戶機(jī)(4)探測(cè)儀器一類(5)車載(6)電梯的轎內(nèi)顯

Windows Embedded 做為嵌入式系統(tǒng)(包含 Windows CE),實(shí)際實(shí)用的領(lǐng)域還是很多的,例如:

(1)(工業(yè))控制
(2)醫(yī)療
(3)瘦客戶機(jī)
(4)探測(cè)儀器一類
(5)車載
(6)電梯的轎內(nèi)顯示器
(7)PND
(8)測(cè)試儀表

工控領(lǐng)域,使用 Windows XP Embedded 的比較多,當(dāng)然也有用到 Windows CE 系統(tǒng)。在消費(fèi)類電子領(lǐng)域,如車載、PND等,使用 Windows CE 的產(chǎn)品比較多。
由于 Windows Embedded 系統(tǒng)的標(biāo)準(zhǔn)窗體界面無法滿足車載及其它產(chǎn)品的需求,主要是因?yàn)橛脩粼谛∑聊坏脑O(shè)備上操作系統(tǒng)提供的控件不方便。其實(shí),在 PC 上也常見此種實(shí)現(xiàn)方式,例如:銀行的一些客戶終端,使用的是 Windows XP 系統(tǒng),但從界面上是看不到系統(tǒng)提供的哪些控件,也感覺不到使用的是 Windows XP 系統(tǒng)。
一般使用 Windows Embedded 的產(chǎn)品都會(huì)采用自定義、個(gè)性化的 UI。UI 的實(shí)現(xiàn)方案也是千差萬別,操作方便、美觀是最基本的要求。其它如擴(kuò)展性、穩(wěn)定性等等要求,在設(shè)計(jì)時(shí)也是必須要考慮的。
整個(gè)框架暫且不說,比如功能的擴(kuò)展性等,先簡(jiǎn)單說說 UI 最終的實(shí)現(xiàn)方法,即 UI 是如何呈現(xiàn)給用戶的。
(1) 使用 GDI 貼圖可能是大家最容易想到,是的,這確實(shí)是最通用的。其對(duì)系統(tǒng)的要求也比較低,不必考慮硬有件是否支持;
? ? 如果使用 GDI 感覺速度不能滿足要求,可以參考通過顯示驅(qū)動(dòng),直接寫顯存。這種方法,需要驅(qū)動(dòng)人員配合,在定制系統(tǒng)時(shí)提供相應(yīng)的接口,一般通過 IOControl 來實(shí)現(xiàn)。
(2) 為了實(shí)現(xiàn)一些特殊的效果,在產(chǎn)品方案支持的情況下使用 overlay 結(jié)合貼圖,利用 overlay 的特性完成 UI 之間的快速切換。例如:使用以下 CPU 的方案Telechips、SiRF Prima、iMX,MStar785等使用 Overlay 是沒有問題的;但 SiRF A5、MStar 2521等低端的 CPU 則不支持。
這兩種方案,基本上都是使用 Windows Embedded 系統(tǒng)提供的功能。
(3) 使用諸如 Open GL ES 做出的支持較好的動(dòng)畫效果的 UI。

(4) 使用 Windows Embedded 新特性的 Silverlight 來實(shí)現(xiàn)的 UI 產(chǎn)品,現(xiàn)在也慢慢的出現(xiàn)在車載系統(tǒng)中。但使用 Silverlight 對(duì)系統(tǒng)的硬件配置要求比較高,現(xiàn)在也只出現(xiàn)在一些高端的產(chǎn)品中。

(5) 第三方工具或開源項(xiàng)目,例如:QT、MiniGUI。


接下來說說框架,在 Windows Embedded 下編程,怎么也逃脫不了 Windows 消息框架,至于是使用 MFC 還是使用 Win32 編程,那可以說是仁者見仁智者見智。但無論選用哪一種,它也只是一個(gè)基礎(chǔ)。UI 框架如何設(shè)計(jì),功能如何與 UI 完美的結(jié)合,以達(dá)到修改 UI 時(shí)盡可能不去關(guān)心功能代碼?這也是 Silverlight 推出時(shí)的設(shè)計(jì)想法:UI 設(shè)計(jì)和實(shí)現(xiàn),與功能的實(shí)現(xiàn)分開。這種分開,個(gè)人認(rèn)為簡(jiǎn)單的說就是耦合度降到最低,不可能徹底分開的。UI 與功能之間一般通過消息、回調(diào)或定時(shí)等機(jī)制結(jié)合在一起。例如有一種使用定時(shí)刷新的 UI 方案,界面刷新的工作由一個(gè)獨(dú)立的線程控制,定時(shí)檢查各 UI 控件是否需要刷新、及如何刷新?功能模塊在功能實(shí)現(xiàn)時(shí),只需要觸發(fā)控件的刷新標(biāo)志即可。
例如如下刷新線程與功能代碼:

//?刷新線程代碼:?刷新各類型控件
while
{
???//?字符串顯示控件
???foreach(各個(gè)字符串控件)
???{
??????if(控件.bRefreshFlag)?//?如果控件的刷新標(biāo)志
??????{
?????????控件.bRefreshFlag?=?FALSE;
?????????//?刷新操作
??????}
???}
???//?按鍵控件
???foreach(各個(gè)按鍵控件)
???{
??????if(控件.bRefreshFlag)?//?如果控件的刷新標(biāo)志
??????{
?????????控件.bRefreshFlag?=?FALSE;
?????????//?刷新操作
??????}
???}
???//?......?????????????????????//?其它類型控件
????Sleep(50);
}


//?功能代碼
//?功能:?字符串顯示控件功能代碼
//?參數(shù)說明:??csStr?控件顯示的字符串;?bRefreshFlag?刷新控件標(biāo)志
void?StrSettingFunction(CString?&csStr,BOOL?&bRefreshFlag)
{
???//??根據(jù)功能代碼賦值新的字符串
???CString?csNewStr;
???if(條件1)
??????csNewStr=?L"XXX";
???else
??????csNewStr?=?L"YYY";
???if(csStr?!=?csNewStr)
???{
??????csStr?=?csNewStr;
??????bRefreshFlag?=?TRUE;?//?賦值刷新標(biāo)志
???}
}
//?功能:?按鍵控件功能功能代碼
//?參數(shù)說明:??bEnable?按鍵使能標(biāo)志(對(duì)應(yīng)顯示Enable/Disable圖片);?bSelect?按鍵按下或選中圖片;?bRefreshFlag?刷新標(biāo)志
void?BtnSettingFunction(BOOL?&bEnable,BOOL?&bSelect,BOOL?&bRefreshFlag,...)
{
???BOOL?bNewEnable;
???BOOL?bNewSelect;
???if(條件1)
??????bNewEnable?=?TRUE;
???else
??????bNewEnable?=?FALSE;
???if(條件2)
??????bNewSelect?=?TRUE;
???else
??????bNewSelect?=?FALSE;
???if(bEnable?!=?bNewEnable)
???{
??????bEnable?=?bNewEnable;
??????bRefreshFlag?=?TRUE;?//?賦值刷新標(biāo)志
???}
???if(bSelect?!=?bNewSelect)
???{
??????bSelect?=?bNewSelect;
??????bRefreshFlag?=?TRUE;?//?賦值刷新標(biāo)志
???}
}



以上功能函數(shù)只是一個(gè)示例,例如:按鍵控件可能需要顯示字符串,其必然包含一個(gè)與字符串顯示類似的函數(shù)。各個(gè)控件都會(huì)有顯示/隱藏屬性,這個(gè)在功能代碼中也需要體現(xiàn)出現(xiàn)。為了方便控件布局,一般都會(huì)支持子窗口,這是一個(gè)多個(gè)功能的集合。
將 UI 與功能分開,是框架設(shè)計(jì)的核心思路。分層的好壞,決定了后繼開發(fā)與維護(hù)的難易程度。

如何使 UI 的設(shè)計(jì)具有簡(jiǎn)單、方便的移植性?這是大家在設(shè)計(jì)時(shí)都會(huì)考慮的內(nèi)容。只所以這樣考慮,是想在功能不變、或簡(jiǎn)單變化的情況下,能快速完成修改、且保證產(chǎn)品的穩(wěn)定性。特別是一些車載方案公司,對(duì)于一些要求不高的小客戶在快速確定 UI 后幾天就可以完成產(chǎn)品的交付。這種修改,一般包括換圖和圖片位置的調(diào)整。如何簡(jiǎn)單有限的記錄圖片與圖片的位置等信息呢?早在幾年前,就有通過簡(jiǎn)單的格式化文本來完成的方案。后來標(biāo)記語(yǔ)言興起,在嵌入式方案中也得到廣泛應(yīng)用,特別是 XML 語(yǔ)言。XML 語(yǔ)言的特點(diǎn)這里就不多說了,有興趣的童鞋在網(wǎng)絡(luò)上查找一下,就能得到答案。在這些方案中,都有用到圖片處理的技術(shù),以實(shí)現(xiàn)透明、半透明等效果。圖片一般采用 BMP 和 PNG 格式,為了方案的保密性等其它一些考慮,圖片一般通過工具打包,甚至于,XML 文件也一起打包。這樣在不了解打包后文件格式的情況下,客戶就必須依賴于軟件設(shè)計(jì)者。將 UI 部分通過可視化工具來實(shí)現(xiàn),可以大大加快 UI 的開發(fā)速度。一般是通過 PC 上的程序來直接操作,剛剛畢業(yè)的學(xué)生在經(jīng)過2到3天的培訓(xùn),就可以完成 UI 部分的工作。

以上三部分結(jié)合在一起,就構(gòu)成了車載應(yīng)用系統(tǒng)中單個(gè)應(yīng)用軟件的框架:控件/子窗體/完整的界面。再給合一個(gè)對(duì)多個(gè)應(yīng)用控制的邏輯,完成應(yīng)用啟動(dòng)/關(guān)閉(顯示/隱藏)等的控制,以完成一個(gè)完整的系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉