微軟Silverlight嵌入式開發(fā)實(shí)例詳解_第1頁
微軟Silverlight嵌入式開發(fā)實(shí)例詳解_第2頁
微軟Silverlight嵌入式開發(fā)實(shí)例詳解_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、微軟 Silverlight嵌入式開發(fā)實(shí)例詳解在這里我們將介紹 Silverlight for Embedded(SE) 在 Windows 嵌入式系統(tǒng)上開發(fā)絢麗界面,希望對大家有所幫助。本文將為大家講述銀光在嵌入式方面的應(yīng)用,希望通過本文能為大家打開一個更加絢麗的 Silverlight 新界面。這文章寫給對使用 Silverlight for Embedded(SE) 在 Windows 嵌入式系統(tǒng)上開發(fā)絢麗界面感興趣的朋友。要求讀者有一定的 Win32 基礎(chǔ), C+ 基礎(chǔ),雖然 SE 是基于 COM 的,但是不需要你了解太多有關(guān) COM 的知識,但是知道COM的原理會幫助你更好的理解SE

2、,另外如果有接觸過Silverlight/WPF會更好。這里有一篇文章幫你從全局來了解SE:微軟最新嵌入式界面開發(fā)技術(shù)首先看一下我已經(jīng)跑起來的應(yīng)用程序的效果(我沒有自己去做XAML ,而是使用上次去微軟培訓(xùn)時 Samples提供的 ),這些圖是從模擬器截取下來的,看起來效果不是太好,后面我有解釋為什么,我放到 NVIDIA Tegra 上面跑起來效果很好 (動畫的幀率在四五十左右 ),這么好的板子沒道理不好。1.What is SE? Why COM based?看到 iPhone、Android 的 UX 不錯,市場也漸漸的流入到對方手里,微軟問自己:我要拿點(diǎn)什么與他們對抗呢?既然我一向平臺

3、做的不錯,那我就拿出一個UX開發(fā)平臺吧!這樣一個在WindowsEmbedded上的UX開發(fā)平臺 (SE)誕生了。SE 是使用C+ 本地代碼編寫的。(本地代碼表示不是執(zhí)行在托管層之上的,所以你無法使用像C#這樣的托管語言開發(fā)。)SE 依賴于 Embedded XAML Runtime (EXR) Framework ,而非依賴于 .Net CF 或者瀏覽器。 不要跟 Silverlight for Windows Mobile 等技術(shù)混淆。除此之外我們還知道SE 是基于 COM (Component Object Model) 的。為啥微軟又搞出COM 技術(shù)來,而不是基于.Net 技術(shù)呢 ?桌

4、面系統(tǒng)上我們看到非常多的技術(shù)是基于.Net 技術(shù),比如,XNA Framework 最初構(gòu)建于 .Net Framework 2.0 之上,另外還加入了一些專注于游戲開發(fā)的類庫,以達(dá)到很高的代碼重用。代碼執(zhí)行在通用語言運(yùn)行時(Common Language Runtime)之上。在這樣的平臺上開發(fā)游戲,你只需要關(guān)系游戲本身的邏輯,還不需要擔(dān)心跨微軟平臺的問題。那么微軟 SE 為什么沒有基于 .Net?我認(rèn)為還是運(yùn)行時效率問題。 CE 設(shè)備 (將來也許在 Windows Phone 上支持這個技術(shù) )多是 CPU 主頻不到 500MHz 、RAM 不到 256M 的設(shè)備,考慮到這點(diǎn)微軟還是選擇了

5、基于 COM 技術(shù)。雖然 COM 還是損耗了很多運(yùn)行時效率,但是它帶來的好處也是明顯的:減少了開發(fā)時間和開發(fā)錯誤。另外可以說微軟的技術(shù)很大部分是構(gòu)架在 COM 技術(shù)上的:IE、Media Player 等應(yīng)用的擴(kuò)展,DirectX中無處不 COM, DirectShow 的 Graph Manager、Filter 、Pin 是 COM 組件 2.SE 技術(shù)的本質(zhì)是什么 ?傳統(tǒng)界面開發(fā)流程中負(fù)責(zé)UI 的 Designer 和負(fù)責(zé) Code 的 Developer 的工作混雜在一起, 如果你從事過這樣的開發(fā),相信你能了解到其中的痛苦:開發(fā)緩慢,開發(fā)流程不能很好的并行, Designer 和 De

6、veloper 各自的成果不能很好的重用 那么 SE 就采用 XAML 作為 Designer 和 Developer 之間銜接的關(guān)鍵, 比較好的分開了他們之間的工作。其實(shí)并沒有完全的分開, WPF 會更好的實(shí)現(xiàn)這個理想。 SE 底層使用 DirectDraw 或者 OpenGL ES的驅(qū)動來實(shí)現(xiàn)硬件加速(先思考一下如何使用到硬件加速)。也就是說如果你采用SE 開發(fā)的Application沒有這些硬件加速支持,那就可憐了。與 SE 相比,微軟內(nèi)部還有個更輕量級的界面開發(fā)技術(shù),叫做Confetti ,它的升級版叫做ConfettiPlus。它們的出現(xiàn)是解決沒有較好的硬件加速支持下的用戶界面(很好

7、的圖形硬件加速代表著要不少 Money)。Confetti 也是采用 XAML 很好的分割開 Designer 和 Developer 的工作,布局、圖形、動畫基本在 XAML 中定義 (與 SE 的一個區(qū)別在于 Confetti 在 XAML 中只能定義簡單的動畫,復(fù)雜一點(diǎn)的動畫需要在 Code 中實(shí)現(xiàn) ),Designer 和 Developer 之間定義好接口 (interation points)之后工作基本上能很好的分開了。 (因為更輕量級, Designer 和 Developer 工作還是沒有 SE、 WPF 分開的充分。 )題外話:Windows Mobile 6.5 的界面即

8、是基于 ConfettiPlus 開發(fā)出來的,如果你能拿到 Windows Mobile 的源碼,那么 ConfettiPlus 的源碼在 private/shellw/confetti/core 目錄下?;?ConfettiPlus 編寫的 Application 依賴于 Confetti Rendering Engine,從字面意思也能知道,它的職責(zé)主要是呈現(xiàn) (Render)。這個 Engine 低下會依賴 GWES 組件和 DDRAW 。還記得我的文章嗎?這篇文章提到定制 Today 工作主要分為 3 部分:注冊表配置 (包括兩部分: Today 整體配置部分,比如整體布局、 所要使

9、用的 CPR 文件等;數(shù)據(jù)源配置,比如配置按鍵的布局等 )、CPR 文件 (基于 XML) 編寫。再與這里介紹到的 ConfettiPlus 結(jié)合起來,不知道你是否能夠明白 Windows Mobile 6.5 UI 的內(nèi)部運(yùn)行機(jī)制?這種開發(fā)模型可并不是微軟發(fā)明的,微軟發(fā)明了它自己的基于Android 開發(fā),你會發(fā)現(xiàn)采用Java 開發(fā)的 Android ApplicationXML 的 XAML 。如果你從事也很好的采用這種方式來分開,而且更成熟一點(diǎn),為什么這么說?請看:Android 也是采用基于 XML 文件的可變化的UI 開發(fā)模型,一個簡單的 XML 布局實(shí)例代碼如下:1.xml ver

10、sion= 1.0encoding=utf-8?2.這樣的 XML 文件你會經(jīng)常在 /res/layout 下看到。另外 Android 開發(fā)工具 (ADT 插件 )會根據(jù) XML 文件幫你生成好一些如下代碼:6.publicfinalclassR 7.publicstaticfinalclassattr 8. ;9.publicstaticfinalclass drawable 10.publicstaticfinalint icon=0x7f020000;11. ;12.publicstaticfinalclass layout 13.publicstaticfinalint main=0

11、x7f030000;14. ;15.publicstaticfinalclassstring16.publicstaticfinalint app_name=0x7f040000;17. ;18. ;這些代碼生成在R.java 文件中,你本身的代碼需要通過這個R 類來使用 XML 資源。是不是很方便?這是目前SE 不能辦到的,但是相信未來微軟會搞出來類似的一套。另外一個國外朋友已經(jīng)幫我們寫好一個實(shí)現(xiàn)類似功能的SE 開發(fā)插件: XAML2CPP ,我會在后面介紹到。通過上面的介紹相信你已經(jīng)簡單了解了 SE 的本質(zhì),如果廣義上來看, UI( 用戶看的到的部分 )其實(shí)也可以看做是程序的數(shù)據(jù), SE

12、的本質(zhì)是利用 XML( 也可以是其它存放數(shù)據(jù)的媒介 )來分開程序的數(shù)據(jù)和代碼。3.環(huán)境搭建安裝順序:(1). Visual Studio 2005(VS08 不可以,因為CE 6.0 是在 VS08 之前出來的 )(2). Visual Studio 2005 SP1(3). Windows Embedded CE 6.0CE 6.0 的 Key 可以獲得一個180 天試用版的,在這里:想看系統(tǒng)源碼的朋友記得把Shared Source選上。(4). Windows Embedded CE 6.0 SP1在這里下載:&displaylang=en(5). Windows Embedded CE

13、 6.0 R2在這里下載:(6). Windows Embedded CE 6.0 R2 各月補(bǔ)丁ARM 處理器有關(guān)的補(bǔ)丁大概有這些,從網(wǎng)上應(yīng)該都能搜到:WinCEPB60-081231-Product-Update-Rollup-Armv4I.msiWinCEPB60-090131-2009M01-Armv4I.msiWinCEPB60-090228-2009M02-Armv4I.msiWinCEPB60-090331-2009M03-Armv4I.msiWinCEPB60-090430-2009M04-Armv4I.msiWinCEPB60-090531-2009M05-Armv4I.ms

14、i(7). Windows Embedded CE 6.0 R3在這里下載:eee3556fe46(8). Windows Embedded CE 6.0 R3 各月補(bǔ)丁 (這個可以先不管 )下一步就可以打開 Visual Studio 2005 創(chuàng)建一個 OS Design Project,定制過程比較簡單,你可以參考馬寧老師的文章:特別提醒的是:如果你想在定制的系統(tǒng)上跑起來SE based Application 的話一定記得選中目錄下的 Silverlight for Windows EmbeddedCore,或者直接加上SYSGEN:SYSGEN_XAML_RUNTIME。前面提高如何

15、使用到圖形硬件加速,你只需添加一個SYSGEN :SYSGEN_XAML_RUNTIME_DDRAW即可使用自帶的DirectDraw rendering plug-in 來實(shí)現(xiàn)圖形硬件加速,當(dāng)然你也可以使用OpenGL ES 加速,后面會提到。4.應(yīng)用程序整體流程介紹(1).實(shí)現(xiàn)我們需要通過Expression Blend 生成好我們需要的XAML、Pictures 等文件, XAML文件里面定義了控件、動畫、布局等UI 元素。(2).然后我們新建一個Win32 智能設(shè)備項目工程(如果你需要ATL 庫的支持, 也可以選擇ATL智能設(shè)備項目工程 ),選擇 Alchemy SDK ,如果選擇其它CE SDK 的話,需要自己包含頭文件和Lib庫。將第 (1) 步得到的XAML等文件導(dǎo)入到項目的資源(rc)文件里面。特別提醒:很久前我使用XamlRuntime.h 頭文件時發(fā)現(xiàn)它少包含了pwinuse

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論