成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微軟Silverlight嵌入式開發實例詳解

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

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

#T#

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

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

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

效果

完成效果2

完成效果

1.What is SE? Why COM based?

看到iPhone、Android的UX不錯,市場也漸漸的流入到對方手里,微軟問自己:我要拿點什么與他們對抗呢?既然我一向平臺做的不錯,那我就拿出一個UX開發平臺吧!這樣一個在Windows Embedded上的UX開發平臺(SE)誕生了。

SE是使用C++本地代碼編寫的。(本地代碼表示不是執行在托管層之上的,所以你無法使用像C#這樣的托管語言開發。)

SE依賴于Embedded XAML Runtime (EXR) Framework,而非依賴于.Net CF或者瀏覽器。不要跟Silverlight for Windows Mobile等技術混淆。

除此之外我們還知道SE是基于COM (Component Object Model)的。為啥微軟又搞出COM技術來,而不是基于.Net技術呢?

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

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

另外可以說微軟的技術很大部分是構架在COM技術上的:IE、Media Player等應用的擴展,DirectX中無處不COM,DirectShow的Graph Manager、Filter、Pin是COM組件…

2.SE技術的本質是什么?

傳統界面開發流程中負責UI的Designer和負責Code的Developer的工作混雜在一起,如果你從事過這樣的開發,相信你能了解到其中的痛苦:開發緩慢,開發流程不能很好的并行,Designer和Developer各自的成果不能很好的重用…

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

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

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

題外話:

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

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

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

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

工具欄

Android也是采用基于XML文件的可變化的UI開發模型,一個簡單的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文件你會經常在/res/layout下看到。

另外Android開發工具(ADT插件)會根據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不能辦到的,但是相信未來微軟會搞出來類似的一套。另外一個國外朋友已經幫我們寫好一個實現類似功能的SE開發插件:XAML2CPP,我會在后面介紹到。

通過上面的介紹相信你已經簡單了解了SE的本質,如果廣義上來看,UI(用戶看的到的部分)其實也可以看做是程序的數據,SE的本質是利用XML(也可以是其它存放數據的媒介)來分開程序的數據和代碼。

3.環境搭建

安裝順序:

(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序列號

想看系統源碼的朋友記得把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處理器有關的補丁大概有這些,從網上應該都能搜到:
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創建一個OS Design Project,定制過程比較簡單,你可以參考馬寧老師的文章:http://www.cnblogs.com/aawolf/archive/2009/10/31/1593596.html

特別提醒的是:如果你想在定制的系統上跑起來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來實現圖形硬件加速,當然你也可以使用OpenGL ES加速,后面會提到。

4.應用程序整體流程介紹

(1).實現我們需要通過Expression Blend生成好我們需要的XAML、Pictures等文件,XAML文件里面定義了控件、動畫、布局等UI元素。

(2).然后我們新建一個Win32智能設備項目工程(如果你需要ATL庫的支持,也可以選擇ATL智能設備項目工程),選擇Alchemy SDK,如果選擇其它CE SDK的話,需要自己包含頭文件和Lib庫。將第(1)步得到的XAML等文件導入到項目的資源(rc)文件里面。

特別提醒:很久前我使用XamlRuntime.h頭文件時發現它少包含了pwinuser.h頭文件,造成編譯時出現GESTUREINFO未定義錯誤。
我發現GESTUREINFO在頭文件pwinuser.h中定義,這個頭文件在C:\WINCE600\PUBLIC\COMMON\OAK\INC。
在Visual Studio 2005中包含該目錄,并在XamlRuntime.h中添加#include
再次編譯成功。該錯誤應該是微軟員工疏忽造成的。

運行結果

提醒 

(3).Code, Debug。

原文標題:Silverlight for Embedded應用編寫參考

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

責任編輯:彭凡 來源: 博客園
相關推薦

2010-01-13 09:51:21

微軟Linux嵌入式

2009-11-07 19:15:51

嵌入式軟件開發

2009-11-30 16:54:28

微軟

2011-01-14 13:13:23

嵌入式Linux開發

2009-08-20 10:57:40

嵌入式開發微軟

2011-08-16 16:32:13

Linux驅動程序

2009-07-17 16:06:59

ARM嵌入式開發

2010-01-06 11:21:05

嵌入式開發

2009-12-09 10:50:53

嵌入式Linux

2009-12-24 17:21:38

嵌入式Linux

2009-07-10 17:36:29

嵌入式開發微軟Windows Emb

2011-11-23 18:28:47

微軟

2011-11-30 17:19:06

微軟

2010-03-18 11:22:10

Windows Emb

2011-12-13 14:51:05

微軟

2010-01-13 09:15:35

嵌入式

2011-07-05 15:42:02

QT 嵌入式 Embedded

2021-10-26 21:50:10

Rust嵌入式開發

2009-12-22 17:46:56

Fedora 9嵌入式

2011-07-01 16:43:26

微軟MVP微軟嵌入式金融行業
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区二区日韩 | 日韩在线一区二区 | 美女天天干天天操 | 久久久久久久一区 | 亚洲+变态+欧美+另类+精品 | 日本午夜一区二区三区 | 亚洲三级av| 国产一区二区三区在线免费观看 | 欧美一级精品片在线看 | 欧美亚洲视频在线观看 | 国内精品久久久久久 | 女人精96xxx免费网站p | 国产精品中文字幕在线播放 | 日韩电影在线一区 | 国产精品视频不卡 | 中文字幕黄色大片 | 国产精品久久国产精品 | 日韩一区二区三区在线观看 | 成人国产网站 | 男人的天堂久久 | 欧美一区二区三区在线观看 | 99精品久久久久 | 男人天堂99 | 久久精品亚洲精品国产欧美 | 成人一区二区电影 | 视频一区中文字幕 | 欧美大片一区二区 | 午夜久久久 | 精品亚洲一区二区三区四区五区 | 热久久性 | 一区精品视频在线观看 | 日韩av高清在线 | 成人福利在线视频 | 国产日韩免费视频 | 第一区在线观看免费国语入口 | 国产综合久久久 | 亚洲另类视频 | 人人玩人人添人人澡欧美 | 97视频在线观看网站 | 亚洲精品在线视频 | 亚洲精品视 |