微软Silverlight嵌入式开发实例详解_第1页
微软Silverlight嵌入式开发实例详解_第2页
微软Silverlight嵌入式开发实例详解_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微软 Silverlight嵌入式开发实例详解在这里我们将介绍 Silverlight for Embedded(SE) 在 Windows 嵌入式系统上开发绚丽界面,希望对大家有所帮助。本文将为大家讲述银光在嵌入式方面的应用,希望通过本文能为大家打开一个更加绚丽的 Silverlight 新界面。这文章写给对使用 Silverlight for Embedded(SE) 在 Windows 嵌入式系统上开发绚丽界面感兴趣的朋友。要求读者有一定的 Win32 基础, C+ 基础,虽然 SE 是基于 COM 的,但是不需要你了解太多有关 COM 的知识,但是知道COM的原理会帮助你更好的理解SE

2、,另外如果有接触过Silverlight/WPF会更好。这里有一篇文章帮你从全局来了解SE:微软最新嵌入式界面开发技术首先看一下我已经跑起来的应用程序的效果(我没有自己去做XAML ,而是使用上次去微软培训时 Samples提供的 ),这些图是从模拟器截取下来的,看起来效果不是太好,后面我有解释为什么,我放到 NVIDIA Tegra 上面跑起来效果很好 (动画的帧率在四五十左右 ),这么好的板子没道理不好。1.What is SE? Why COM based?看到 iPhone、Android 的 UX 不错,市场也渐渐的流入到对方手里,微软问自己:我要拿点什么与他们对抗呢?既然我一向平台

3、做的不错,那我就拿出一个UX开发平台吧!这样一个在WindowsEmbedded上的UX开发平台 (SE)诞生了。SE 是使用C+ 本地代码编写的。(本地代码表示不是执行在托管层之上的,所以你无法使用像C#这样的托管语言开发。)SE 依赖于 Embedded XAML Runtime (EXR) Framework ,而非依赖于 .Net CF 或者浏览器。 不要跟 Silverlight for Windows Mobile 等技术混淆。除此之外我们还知道SE 是基于 COM (Component Object Model) 的。为啥微软又搞出COM 技术来,而不是基于.Net 技术呢 ?桌

4、面系统上我们看到非常多的技术是基于.Net 技术,比如,XNA Framework 最初构建于 .Net Framework 2.0 之上,另外还加入了一些专注于游戏开发的类库,以达到很高的代码重用。代码执行在通用语言运行时(Common Language Runtime)之上。在这样的平台上开发游戏,你只需要关系游戏本身的逻辑,还不需要担心跨微软平台的问题。那么微软 SE 为什么没有基于 .Net?我认为还是运行时效率问题。 CE 设备 (将来也许在 Windows Phone 上支持这个技术 )多是 CPU 主频不到 500MHz 、RAM 不到 256M 的设备,考虑到这点微软还是选择了

5、基于 COM 技术。虽然 COM 还是损耗了很多运行时效率,但是它带来的好处也是明显的:减少了开发时间和开发错误。另外可以说微软的技术很大部分是构架在 COM 技术上的:IE、Media Player 等应用的扩展,DirectX中无处不 COM, DirectShow 的 Graph Manager、Filter 、Pin 是 COM 组件 2.SE 技术的本质是什么 ?传统界面开发流程中负责UI 的 Designer 和负责 Code 的 Developer 的工作混杂在一起, 如果你从事过这样的开发,相信你能了解到其中的痛苦:开发缓慢,开发流程不能很好的并行, Designer 和 De

6、veloper 各自的成果不能很好的重用 那么 SE 就采用 XAML 作为 Designer 和 Developer 之间衔接的关键, 比较好的分开了他们之间的工作。其实并没有完全的分开, WPF 会更好的实现这个理想。 SE 底层使用 DirectDraw 或者 OpenGL ES的驱动来实现硬件加速(先思考一下如何使用到硬件加速)。也就是说如果你采用SE 开发的Application没有这些硬件加速支持,那就可怜了。与 SE 相比,微软内部还有个更轻量级的界面开发技术,叫做Confetti ,它的升级版叫做ConfettiPlus。它们的出现是解决没有较好的硬件加速支持下的用户界面(很好

7、的图形硬件加速代表着要不少 Money)。Confetti 也是采用 XAML 很好的分割开 Designer 和 Developer 的工作,布局、图形、动画基本在 XAML 中定义 (与 SE 的一个区别在于 Confetti 在 XAML 中只能定义简单的动画,复杂一点的动画需要在 Code 中实现 ),Designer 和 Developer 之间定义好接口 (interation points)之后工作基本上能很好的分开了。 (因为更轻量级, Designer 和 Developer 工作还是没有 SE、 WPF 分开的充分。 )题外话:Windows Mobile 6.5 的界面即

8、是基于 ConfettiPlus 开发出来的,如果你能拿到 Windows Mobile 的源码,那么 ConfettiPlus 的源码在 private/shellw/confetti/core 目录下。基于 ConfettiPlus 编写的 Application 依赖于 Confetti Rendering Engine,从字面意思也能知道,它的职责主要是呈现 (Render)。这个 Engine 低下会依赖 GWES 组件和 DDRAW 。还记得我的文章吗?这篇文章提到定制 Today 工作主要分为 3 部分:注册表配置 (包括两部分: Today 整体配置部分,比如整体布局、 所要使

9、用的 CPR 文件等;数据源配置,比如配置按键的布局等 )、CPR 文件 (基于 XML) 编写。再与这里介绍到的 ConfettiPlus 结合起来,不知道你是否能够明白 Windows Mobile 6.5 UI 的内部运行机制?这种开发模型可并不是微软发明的,微软发明了它自己的基于Android 开发,你会发现采用Java 开发的 Android ApplicationXML 的 XAML 。如果你从事也很好的采用这种方式来分开,而且更成熟一点,为什么这么说?请看:Android 也是采用基于 XML 文件的可变化的UI 开发模型,一个简单的 XML 布局实例代码如下:1.xml ver

10、sion= 1.0encoding=utf-8?2.这样的 XML 文件你会经常在 /res/layout 下看到。另外 Android 开发工具 (ADT 插件 )会根据 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 不能办到的,但是相信未来微软会搞出来类似的一套。另外一个国外朋友已经帮我们写好一个实现类似功能的SE 开发插件: XAML2CPP ,我会在后面介绍到。通过上面的介绍相信你已经简单了解了 SE 的本质,如果广义上来看, UI( 用户看的到的部分 )其实也可以看做是程序的数据, SE

12、的本质是利用 XML( 也可以是其它存放数据的媒介 )来分开程序的数据和代码。3.环境搭建安装顺序:(1). Visual Studio 2005(VS08 不可以,因为CE 6.0 是在 VS08 之前出来的 )(2). Visual Studio 2005 SP1(3). Windows Embedded CE 6.0CE 6.0 的 Key 可以获得一个180 天试用版的,在这里:想看系统源码的朋友记得把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 各月补丁ARM 处理器有关的补丁大概有这些,从网上应该都能搜到: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 各月补丁 (这个可以先不管 )下一步就可以打开 Visual Studio 2005 创建一个 OS Design Project,定制过程比较简单,你可以参考马宁老师的文章:特别提醒的是:如果你想在定制的系统上跑起来SE based Application 的话一定记得选中目录下的 Silverlight for Windows EmbeddedCore,或者直接加上SYSGEN:SYSGEN_XAML_RUNTIME。前面提高如何

15、使用到图形硬件加速,你只需添加一个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 头文件时发现它少包含了pwinuse

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论