偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

微軟Silverlight嵌入式開發(fā)實例詳解

開發(fā) 后端
在這里我們將介紹Silverlight for Embedded(SE)在Windows嵌入式系統(tǒng)上開發(fā)絢麗界面,希望對大家有所幫助。

本文將為大家講述銀光在嵌入式方面的應(yīng)用,希望通過本文能為大家打開一個更加絢麗的Silverlight新界面。

#T#

這文章寫給對使用Silverlight for Embedded(SE)在Windows嵌入式系統(tǒng)上開發(fā)絢麗界面感興趣的朋友。要求讀者有一定的Win32基礎(chǔ),C++基礎(chǔ),雖然SE是基于COM的,但是不需要你了解太多有關(guān)COM的知識,但是知道COM的原理會幫助你更好的理解SE,另外如果有接觸過Silverlight/WPF會更好。

這里有一篇文章幫你從全局來了解SE:微軟最新嵌入式界面開發(fā)技術(shù)

首先看一下我已經(jīng)跑起來的應(yīng)用程序的效果(我沒有自己去做XAML,而是使用上次去微軟培訓(xùn)時Samples提供的),這些圖是從模擬器截取下來的,看起來效果不是太好,后面我有解釋為什么,我放到NVIDIA Tegra上面跑起來效果很好(動畫的幀率在四五十左右),這么好的板子沒道理不好。

效果

完成效果2

完成效果

1.What is SE? Why COM based?

看到iPhone、Android的UX不錯,市場也漸漸的流入到對方手里,微軟問自己:我要拿點什么與他們對抗呢?既然我一向平臺做的不錯,那我就拿出一個UX開發(fā)平臺吧!這樣一個在Windows Embedded上的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ù)呢?

桌面系統(tǒng)上我們看到非常多的技術(shù)是基于.Net技術(shù),比如XNA(http://creators.xna.com/en-US/),XNA Framework最初構(gòu)建于.Net Framework 2.0之上,另外還加入了一些專注于游戲開發(fā)的類庫,以達(dá)到很高的代碼重用。代碼執(zhí)行在通用語言運行時(Common Language Runtime)之上。在這樣的平臺上開發(fā)游戲,你只需要關(guān)系游戲本身的邏輯,還不需要擔(dān)心跨微軟平臺的問題。

那么微軟SE為什么沒有基于.Net?我認(rèn)為還是運行時效率問題。CE設(shè)備(將來也許在Windows Phone上支持這個技術(shù))多是CPU主頻不到500MHz、RAM不到256M的設(shè)備,考慮到這點微軟還是選擇了基于COM技術(shù)。雖然COM還是損耗了很多運行時效率,但是它帶來的好處也是明顯的:減少了開發(fā)時間和開發(fā)錯誤。

另外可以說微軟的技術(shù)很大部分是構(gòu)架在COM技術(shù)上的:IE、Media Player等應(yīng)用的擴展,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和Developer各自的成果不能很好的重用…

那么SE就采用XAML作為Designer和Developer之間銜接的關(guān)鍵,比較好的分開了他們之間的工作。其實并沒有完全的分開,WPF會更好的實現(xiàn)這個理想。SE底層使用DirectDraw或者OpenGL ES的驅(qū)動來實現(xiàn)硬件加速(先思考一下如何使用到硬件加速)。也就是說如果你采用SE開發(fā)的Application沒有這些硬件加速支持,那就可憐了。

與SE相比,微軟內(nèi)部還有個更輕量級的界面開發(fā)技術(shù),叫做Confetti,它的升級版叫做ConfettiPlus。它們的出現(xiàn)是解決沒有較好的硬件加速支持下的用戶界面(很好的圖形硬件加速代表著要不少Money)。

Confetti也是采用XAML很好的分割開Designer和Developer的工作,布局、圖形、動畫基本在XAML中定義(與SE的一個區(qū)別在于Confetti在XAML中只能定義簡單的動畫,復(fù)雜一點的動畫需要在Code中實現(xiàn)),Designer和Developer之間定義好接口(interation points)之后工作基本上能很好的分開了。(因為更輕量級,Designer和Developer工作還是沒有SE、WPF分開的充分。)

題外話:

Windows Mobile 6.5的界面即是基于ConfettiPlus開發(fā)出來的,如果你能拿到Windows Mobile的源碼,那么ConfettiPlus的源碼在private/shellw/confetti/core目錄下?;贑onfettiPlus編寫的Application依賴于Confetti Rendering Engine,從字面意思也能知道,它的職責(zé)主要是呈現(xiàn)(Render)。這個Engine低下會依賴GWES組件和DDRAW。

還記得我的文章http://www.cnblogs.com/wangkewei/archive/2009/10/16/1584773.html嗎?

這篇文章提到定制Today工作主要分為3部分:注冊表配置(包括兩部分:Today整體配置部分,比如整體布局、所要使用的CPR文件等;數(shù)據(jù)源配置,比如配置按鍵的布局等)、CPR文件(基于XML)編寫。再與這里介紹到的ConfettiPlus結(jié)合起來,不知道你是否能夠明白Windows Mobile 6.5 UI的內(nèi)部運行機制?

這種開發(fā)模型可并不是微軟發(fā)明的,微軟發(fā)明了它自己的基于XML的XAML。如果你從事Android開發(fā),你會發(fā)現(xiàn)采用Java開發(fā)的Android Application也很好的采用這種方式來分開,而且更成熟一點,為什么這么說?請看:

工具欄

Android也是采用基于XML文件的可變化的UI開發(fā)模型,一個簡單的XML布局實例代碼如下:

  1. xml version="1.0" encoding="utf-8"?>    
  2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"   
  3. android:layout_width="fill_parent"   
  4. android:layout_height="fill_parent"   
  5. android:text="Hello, Android"/>   

這樣的XML文件你會經(jīng)常在/res/layout下看到。

另外Android開發(fā)工具(ADT插件)會根據(jù)XML文件幫你生成好一些如下代碼:

  1. public final class R {    
  2. public static final class attr {    
  3.  };    
  4. public static final class drawable {    
  5. public static final int icon=0x7f020000;    
  6. };    
  7. public static final class layout {    
  8. public static final int main=0x7f030000;    
  9. };    
  10. public static final class string {    
  11. public static final int app_name=0x7f040000;    
  12. };    
  13. };   

這些代碼生成在R.java文件中,你本身的代碼需要通過這個R類來使用XML資源。

是不是很方便?這是目前SE不能辦到的,但是相信未來微軟會搞出來類似的一套。另外一個國外朋友已經(jīng)幫我們寫好一個實現(xiàn)類似功能的SE開發(fā)插件:XAML2CPP,我會在后面介紹到。

通過上面的介紹相信你已經(jīng)簡單了解了SE的本質(zhì),如果廣義上來看,UI(用戶看的到的部分)其實也可以看做是程序的數(shù)據(jù),SE的本質(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.0

CE 6.0的Key可以獲得一個180天試用版的,在這里:http://www.microsoft.com/windowsembedded/en-us/downloads/default.mspx

CD序列號

想看系統(tǒng)源碼的朋友記得把Shared Source選上。

(4). Windows Embedded CE 6.0 SP1

在這里下載:http://www.microsoft.com/downloads/details.aspx?familyid=BF0DC0E3-8575-4860-A8E3-290ADF242678&displaylang=en

(5). Windows Embedded CE 6.0 R2

在這里下載:http://www.microsoft.com/downloads/details.aspx?FamilyId=F41FC7C1-F0F4-4FD6-9366-B61E0AB59565&displaylang=en

(6). Windows Embedded CE 6.0 R2各月補丁

ARM處理器有關(guān)的補丁大概有這些,從網(wǎng)上應(yīng)該都能搜到:
WinCEPB60-081231-Product-Update-Rollup-Armv4I.msi
WinCEPB60-090131-2009M01-Armv4I.msi
WinCEPB60-090228-2009M02-Armv4I.msi
WinCEPB60-090331-2009M03-Armv4I.msi
WinCEPB60-090430-2009M04-Armv4I.msi
WinCEPB60-090531-2009M05-Armv4I.msi

(7). Windows Embedded CE 6.0 R3

在這里下載:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bc247d88-ddb6-4d4a-a595-8eee3556fe46

(8). Windows Embedded CE 6.0 R3各月補丁(這個可以先不管)

下一步就可以打開Visual Studio 2005創(chuàng)建一個OS Design Project,定制過程比較簡單,你可以參考馬寧老師的文章:http://www.cnblogs.com/aawolf/archive/2009/10/31/1593596.html

特別提醒的是:如果你想在定制的系統(tǒng)上跑起來SE based Application的話一定記得選中Core OS\CEBASE\Shell and User Interface\User Interface\目錄下的Silverlight for Windows Embedded,或者直接加上SYSGEN:SYSGEN_XAML_RUNTIME。

前面提高如何使用到圖形硬件加速,你只需添加一個SYSGEN:SYSGEN_XAML_RUNTIME_DDRAW即可使用自帶的DirectDraw rendering plug-in來實現(xiàn)圖形硬件加速,當(dāng)然你也可以使用OpenGL ES加速,后面會提到。

4.應(yīng)用程序整體流程介紹

(1).實現(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)它少包含了pwinuser.h頭文件,造成編譯時出現(xiàn)GESTUREINFO未定義錯誤。
我發(fā)現(xiàn)GESTUREINFO在頭文件pwinuser.h中定義,這個頭文件在C:\WINCE600\PUBLIC\COMMON\OAK\INC。
在Visual Studio 2005中包含該目錄,并在XamlRuntime.h中添加#include
再次編譯成功。該錯誤應(yīng)該是微軟員工疏忽造成的。

運行結(jié)果

提醒 

(3).Code, Debug。

原文標(biāo)題:Silverlight for Embedded應(yīng)用編寫參考

鏈接:http://www.cnblogs.com/wangkewei/archive/2009/12/22/1629869.html

責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2010-01-13 09:51:21

微軟Linux嵌入式

2011-01-14 13:13:23

嵌入式Linux開發(fā)

2009-11-30 16:54:28

微軟

2009-11-07 19:15:51

嵌入式軟件開發(fā)

2011-08-16 16:32:13

Linux驅(qū)動程序

2009-08-20 10:57:40

嵌入式開發(fā)微軟

2009-07-17 16:06:59

ARM嵌入式開發(fā)

2009-12-24 17:21:38

嵌入式Linux

2009-12-09 10:50:53

嵌入式Linux

2010-01-06 11:21:05

嵌入式開發(fā)

2009-07-10 17:36:29

嵌入式開發(fā)微軟Windows Emb

2011-11-23 18:28:47

微軟

2011-11-30 17:19:06

微軟

2011-07-05 15:42:02

QT 嵌入式 Embedded

2021-10-26 21:50:10

Rust嵌入式開發(fā)

2010-01-13 09:15:35

嵌入式

2009-12-22 17:46:56

Fedora 9嵌入式

2010-03-18 11:22:10

Windows Emb

2011-12-13 14:51:05

微軟

2011-07-01 16:43:26

微軟MVP微軟嵌入式金融行業(yè)
點贊
收藏

51CTO技術(shù)棧公眾號