⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 123.txt

📁 jin tian xin qing hen hao nimen kuaikuai xiazai
💻 TXT
📖 第 1 页 / 共 5 页
字号:
前言
几乎是从Windows CE诞生起,我就开始在它上面工作了。作为一个多年的Windows程序员,能够将我的Windows程序设计经验应用到如此多
的不同而又很小的系统上,使我感到吃惊。这些Windows CE系统运行在各个领域,从类似PC的迷你膝上机到蜂窝手机,再到深藏于一些大
型工业设备里的嵌入式设备。Windows CE里的Win32 API使成千上万的Windows程序员能够在一个全新的系统领域里写应用程序。然而,细
微的差别,使得在Windows CE中编程不同于在桌面版本的Windows中编程。我将在本书里进行讲解的正是这些差异。
Windows CE到底是什么?
Windows CE是最小,也可能是最有趣的微软Windows 操作系统。Windows CE彻头彻尾的被设计成一个基于ROM的,使用Win32 API子集的小
型操作系统。Windows CE把Windows API扩展到那些不支持大容量XP内核的领域和机器上。
目前逐步消亡的Windows 95/98/Me 对那些需要向后兼容MS-DOS、Windows 2.x和3.x 程序的用户来说,是个大操作系统。虽然它有缺点,
但Windows Me还是继承了这个困难的任务。另一方面,Windows NT/2000/XP 是用于企业级的。它牺牲了兼容性和大小,来达到高级别的稳
定和健壮。Windows XP 家庭版是Windows XP 的一个版本,用于家庭用户,它尽力保持了兼容性,但这相对于它的基本目标--稳定性来说
,兼容性还是排在第2位的。
Windows CE并不向后兼容MS-DOS或者Windows.它不是一个为企业级计算设计的全功能的操作系统。相反,Windows CE 是一个轻量级、多线
程的操作系统,它具有可选的图形用户接口。它的长处在于它的小尺寸、Win32 API子集和多平台支持。
Windows CE 也是最初.NET CF版本的基础,.NET CF是.NET在移动和嵌入式设备上的版本。这个精简框架使用一个更小的类库提供了一个同
样强大的.NET运行时环境,这使得它适合用于电池供电的小型设备上。


Win CE历史简介

为了理解Windows CE的历史,你需要理解操作系统和使用操作系统的产品之间的区别。操作系统是微软内部一组核心团队开发的。他们的产品就是操作系统自身。其他团队,比如开发Pocket PC的团队,在操作系统即将发布的时候,获得并使用最新版本的操作系统。这种划分成两部分的方式,可能对理解Windows CE是怎么发展的会产生一些混淆。下面让我们分别看一下这两部分的历史--设备和操作系统自身。

设备
首批为Windows CE设计的是手持式“管理器”设备,配有480*240或640*240的屏幕和Chiclet键盘(计算机常用的一种键盘,有一个很小的矩形键盘)。这些设备,称为手持式PC,在1996年首次面世。在Fall Comdex 97大会上,Windows CE 2.0,一个进行了显著更新的操作系统版本发布了,和它配套的是类似的更新一些的硬件,具有640*240的横向屏幕,一些是彩色的,还具有略大一些的键盘。

1998年1月,消费电子展览会上,微软宣布了两个平台,掌上电脑(译者注:Palm-size PC可以看作Pocket PC的前身,其中使用Windows CE 2.x的称为Palm-size PC,使用Windows CE 3.x的称为Pocket PC)和车载PC(译者注:Auto PC是Windows CE的一种应用模式,多用在一些车载电脑、工业自动控制等场合,可按客户需要修改输入输出方式而不限定使用原有的程序。)。掌上电脑目标直接瞄准了由Palm 0s统治的基于笔式的管理器市场。掌上电脑具有纵向显示的特点,并配有240*320的屏幕,使用输入笔来作为输入方式。但是很不幸,对Windows CE爱好者来说,对这种原始掌上电脑,公众显然缺乏热情。

此后,出现了一种新的迷你膝上式Windows CE设备,配备了触摸式输入键盘和VGA/Super VGA屏幕。这种设备被称为H/PC(专业版),电池可使用10小时,并配备了微软Pocket Office软件改进版。这种设备中有许多具有内置Modem,一些甚至配备了thenstandard 屏幕,移动轨迹垫或者IBM轨迹球设备。

2000年4月,微软宣布了Pocket PC,它对老式掌上电脑(Palm-size PC)做了极大的增强。最初的Pocket PC使用预发布的具有更多功能的Windows CE 3.0。Pocket PC的用户界面也有所不同,具有更加整洁的2纬外观和修改过的主页-Today桌面。然而,Pocket PC最重要的特性是极大的改进了Windows CE的性能。微软做了很多工作来调优Windows CE的性能。这些改进加上更快的CPU,可以让系统像Pocket 管理器期望的那样运行的更快。在这种Pocket PC里,摩尔定律使得Windows CE设备可以跨越这条线:现在硬件已经有能力提供Windows CE需要的运算能力了。

手持式PC在2000年时升级到了Windows CE 3.0。虽然这些系统(现在称为手持式PC2000)在消费领域没有成功,但在工业领域找到了市场。它凭借相对低的费用,大屏幕和长时间电池能力满足了这个机会市场。

2001年晚些时候,Pocket PC更新为Pocket PC 2002。这次发布使用了Windows CE3.0的最终发布版本,并做了一些用户接口方面的改进。同时也增加了Pocket PC Phone版本,在Pocket PC设备中集成了蜂窝电话支持功能。这些设备具有了Pocket PC的功能,也具有蜂窝电话的联通功能,形成了新一代的几乎可以始终连接的移动软件。

微软的另一组人发布了Smart Display(译者注:一种具有触摸屏的无线监视器,可以通过802.11b无线网络连接到个人计算机,并使用Windows XP Professional操作系统的“Remote Desktop”(远程桌面)来访问主机)。它使用Windows CE.NET 4.1系统,具有平板式设备形式,有无线网络访问能力,有一个底座可以连接到PC上。当使用底座的时候,它可以做第2个显示器。当不用底座的时候,它可作为PC的移动显示器。


2003年春季,Pocket PC团队发布了升级版的Pocket PC,称为Pocket PC 2003。系统在用户接口方面没有很多变化,但由于是基于Windows CE.NET 4.2,所以在稳定性和性能方面都有了巨大改进。Pocket PC 2003还集成了蓝牙支持功能,OEM厂商可以选择是否包含该功能。

微软还和OEM厂商合作生产基于Windows CE的蜂窝电话。这些电话中的少部分被称为Smartphone(智能电话),在2002年末发布了,最初是基于Windows CE 3.0。2003年升级到了Windows CE4.2,并增加了一系列特征,包括 .NET runtime功能。

新设备一直不断在发布,例如 Media to Go设备,就是使用硬盘来存储的移动视频播放器。Windows CE操作系统的强大功能,使应用程序凭借运行在这些设备上的简单操作系统 超越了系统能力。

操作系统

虽然面向消费者的产品可以不断产生新闻热点,但最重要的开发工作仍然在操作系统自身。Windows CE从1.0之日就开始不断演化,当它还是一个简单的管理器操作系统时就被寄予厚望。从Windows CE 2.0开始一直持续到今日,微软不断发布Windows CE的嵌入式版本,使开发者可以用在他们自定义的硬件上。虽然像Pocket PC等消费平台占据了宣传的主体,但对基本操作系统的改进是使诸如Pocket PC和Smartphone之类的设备能够运做的基础。

在Fall Comdex 1997大会上,Windows CE 2.0随着手持式PC 2.0一起发布了。Windows CE 2.0增加了网络支持,包括Windows 标准网络功能,支持NDIS miniport驱动模式,以及通用NE2000网络卡驱动支持。虽然增加的COM被限制在进程内服务,但可以用来支持脚本编写。引入了新的显示驱动模式,可以支持像素深度,而不再是Windows CE 1.0中原始的每像素2位了。Windows CE 2.0是Windows CE操作系统中第一个与诸如H/PC等产品分离,独立发布的版本。开发者可以购买Windows CE 嵌入式工具包(ETK),它可以让开发者为特殊的硬件平台定制Windows CE。然而,用过ETK后,开发者会发现,这个产品的功能还没有达到它所宣称的目标。

随着掌上电脑(Palm-size PC)在1998年初发布后,Windows CE又在不断改进。虽然Windows CE 2.01没有按ETK形式发布,但它在减少操作系统和应用程序大小方面做的努力还是值得称道的。在Windows CE 2.01中,C运行时库从每个EXE和DLL都要绑定的静态链接库中去掉了,放到了操作系统里。这极大的减小了操作系统和应用程序的大小。

1998年8月,微软发布了H/PC,配套的发布了操作系统的新版本-2.11版。Windows CE 2.11是从未正式发布的Windows CE 2.1的服务升级包。这一年年末,Windows CE 2.11作为Windows CE平台的2.11版本,发布给了嵌入式开发者社区。该版本支持改进的对象存储,允许要存储的文件大于4M。还增加了对控制台程序的支持,同时增加了MS-DOS风格的命令行解释器CMD.exe的Windows CE支持。Windows CE2.11还增加了Fast IR,用于支持IrDA的4M红外线标准,同时增加了一些特殊功能来支持IP多点传送。最初的安全概念被引入:设备可以检查和拒绝装载没有被认证的模块。

Windows CE 2.12也是作为2.1-白桦(Windows CE 2.1的代号)的服务包发布的。这次发布中最大的亮点是一个增强的平台Builder工具集,它具有一个图形化的前端界面。用一个新的通知接口调整了系统操作,新的接口将不同的通知功能进行了组合。通知的用户接口暴露在平台Builder中,允许嵌入式应用开发者定制通知对话框。微软基于PC的Internet浏览器 IE 4.0也被引入到Windows CE中,称为Genie-通用IE控件。这个HTML浏览器控件完善了简单小巧的Pocket Internet浏览器。微软消息队列(MMQ)也被加了进去。Windows CE 2.11中的安全功能“运行/不运行(go/no go)”也增加了“运行,但不信任(go,but don't trust)”的选项。这样,不被信任的模块可以运行,但不能调用关键功能集,也不能修改注册表的某些部分。

期待已久的Windows CE 3.0终于在2000年中发布了。这次发布是跟随同年4月发布的Pocket PC的,它使用了Windows CE 3.0略早一些的内部版本。Windows CE 3.0最大的亮点在它的内核,内核为更好的支持实时功能而做了优化。增强后的内核,支持256个线程优先级(之前的版本是8个),可调整线程周期,可嵌套的中断服务程序,并减少了内核等待时间。

Windows CE 3.0改进的地方不仅仅在内核上。一个新的COM组件被加入进来,用来完善2.0就有的进程内COM功能。新的组件支持完整的进程外COM和DCOM功能。对象存储区域也做了改进,可以支持256M RAM了。对象存储区域里的文件大小限制也提高到了32M/文件。Platform Builder 3.0的附加的软件包加入了更多的功能,增加了media player控件,提高了多媒体支持。用PPTP,ICS和远程桌面显示功能改进了网络支持。还正式引入了DirectX API。

Windows CE接下来的一个版本,改变的不仅仅是新特性,产品的名字也改了。2001年初,Windows CE.NET 4.0发布了。这个版本里,改变了虚拟内存的管理方式,将每个应用程序的虚拟内存空间扩大了1倍。Windows CE.NET 4.0还增加了新的驱动装载模式,服务(Services)支持,新的基于文件的注册选项,蓝牙功能,802.11以及1394支持。具有讽刺意味的是,Windows CE.NET 4.0虽然叫.NET,但却不支持.NET 精简框架。

2001年末,Windows CE 4.1跟随Windows CE 4.0之后发布了,增加了IP v6支持,Winsock2支持,一组支持applets的新功能,以及一个叫Power Manager的例子。Windows CE 4.1支持.NET 精简框架。.NET 运行时库作为一个快速修复包(QFE),在操作系统发布后提供的。

2003第2季度,Windows CE.NET 4.2发布了。这次升级,提供了很棒的、OEM厂商期待的新特性-在嵌入式系统上支持Pocket PC应用程序。Pocket PC特有的API,比如菜单条、软输入法以及其它解释器特性,被移植到基本操作系统里了。为支持名字空间扩展,浏览器Shell被重写。通过在某些CPU上直接支持硬件分页表功能,内核性能得到了改进。

因为Windows CE不断在发展,下个版本的Windows CE正在开发中,一旦有新版本发布的信息,我将更新到我的网站 www.bolingconsulting.com。



为什么你应该读这本书
《微软Windows CE程序设计》一书,是为任何想给Windows CE或.NET精简框架编写应用程序的人写的。嵌入式系统程序员为特定的应用使用Windows CE,Windows 程序员对写或者移植一个已有的Windows程序很感兴趣,甚至可管理代码的开发者都可以用本书里的信息来使他们的工作更容易。

嵌入式系统上的程序员,他们或许没有Windows 程序员熟悉Win32 API,他们可以读本书第1部分的内容来熟悉 Windows 编程。虽然这一部分不如《Windows程序设计》(Charles Petzold著)这类书能提供全面的指南,但它的确提供了一些基本信息,使读者可以读懂后面的内容。它也为嵌入式系统程序员开发复杂但很有用的Windows CE 程序提供了帮助。

有经验的Windows 程序员可以通过本书学习Windows CE 和 Windows XP中Win32 API的差异,两者之间的差异是很显著的。Windows CE的小巧意味着Win32模式里的很多API不能被支持。Win32 API的某些部分根本不被支持。另一方面,因为Windows CE的特殊性,Windows CE在许多领域扩展了Win32 API,本书将讲述这些领域。

本书对使用.NET CF的开发者也很有用。当前的CF在功能上有些缺陷:需要用可管理的应用程序来调用操作系统来执行某个任务。本书对从操作系统可以获得什么做了很好的指导。书中有一章节会讨论在基于Windows CE的设备中开发可管理代码所涉及的特性。

本书通过例子来进行教学。我专门为本书写了许多Windows CE示例程序。例子的原代码列在了书中。源代码及最终编译后的程序可以在附书光盘里找到,这些适合许多Windows CE支持的处理器。

书中的示例都是直接用API写的,即所谓的“Petzold”编程方式。由于本书的目标是教你如何为Windows CE编写程序,所以示例都避免使用诸如MFC等类库,应为这会使为Windows CE写应用程序所涉及的特性产生混乱。一些人可能会认为Windows CE中有MFC,了解Windows CE API的必要性就不那么大了。我并不这么认为,Windows CE API的知识可以使你更有效的使用MFC。我认为真正了解操作系统能够有效的简化应用程序的调试。


第3版新内容
第3版本做了比较大的修订,增加了很多重要的内容,包括Smartphone、蓝牙等多个新主题。本书更新了Windows CE.NET 4.2的新特性。增加了新的章节,覆盖Smartphone和.NET CF。许多章节做了明显扩充,覆盖了OBEX、蓝牙和服务等主题。另有一些章节做了重新整理以更好的描述主题。

为Smartphone以及Pocket PC Phone的通信特性增加了一章内容,涉及如何为Smartphone 2003设备写应用程序。还讲述了在Smartphone和Pocket PC Phone上,如何通过SMS系统,使用联接管理器、发送和接收消息功能来写应用程序。

新增了一章关于.NET CF内容的,涉及如何写Windows CE上可管理的应用程序。在此之后,集中在.NET CF的特殊类Windows Form的应用程序上。本章涉及的一个重要部分是,当可管理类库不能提供应用所需的功能时,如何在可管理的代码中调用不可管理或者本地代码。

设备之间通信这一章节涉及蓝牙和OBEX。蓝牙是一个无线通信标准,但坦白地说,在许多文章中并没有很好的解释说明。这一章介绍了蓝牙技术并提供了一个简单易懂的使用示例。本章还包括OBEX内容,OBEX是蓝牙和红外线数字联盟使用的对象交换标准。本章另外一个例子演示了如何用OBEX通过蓝牙或者红外线数据方式去传送文件到其他设备。

Pocket PC这一章增加了Pocket PC 2003设备的新特性。本书第2版Pocket PC一章中的菜单条例子已经移到了通用控件这一章,这表明出在最新的Windows CE版本中,Pocket PC API将一些功能移到操作系统中。

驱动程序和服务一章也做了更新,涉及Windows CE服务。Windows CE服务在Windows CE .NET 4.0中引入。Windows CE服务程序为编写后台运行程序提供了方法,避免为服务使用单独的进程所带来的开销。操作系统还提供超级服务来监控IP端口,并在客户端连接该端口的时候通知服务。本章提供了一个简单的Windows CE 服务例子,演示了如何写服务程序和使用超级服务的特性。

对本书第1版的读者来说,本书包含了第2版的所有新特性。更新内容涉及Pocket PC和Windows CE设备驱动程序,以及第1版发布后,实现的新的内容管理和线程特性。





.NET精简框架
一个开发者没有听说过微软的.NET计划,那他一定是在荒岛上。该计划包括一个运行时环境,把代码从硬件上隔离开,同时提供一个类型安全的运行时环境以增加安全性。为嵌入式和电池供电的设备编写了更小一些的运行库。.NET精简框架的最初版本运行在有Windows CE的Pocket PC和基于Windows CE.NET 4.1及以后的嵌入式系统上。

嵌入式设备的特殊要求使得在它上面只用可管理的代码写应用程序成为一项挑战。嵌入式应用和一些移动应用要求应用程序和设备紧密的集成在一起。因为运行时库的特性之一就是将应用和硬件隔离,所以一个嵌入式可管理的应用程序有时需要打破运行时库的限制,直接访问某些操作系统的功能。

正如前面所提到的,在精简框架这一章节里,花费了大量时间来讨论如何使可管理的应用程序访问操作系统。讨论涉及到一些技术,比如通过跨越可管理/本地代码边界来聚集参数等,当然,在精简构架里完成这个任务比在桌面应用中更困难。


关于MFC

对于问是否该用MFC开发Windows CE下应用程序的人,过去,我通常的回答是:不要用。老版的windows CE系统加上比较慢的CPU,运行复杂、全功能的MFC应用会带来很大的压力。但现在,我不再这么绝对了。新版的Windows CE平台足够快,可以用合理的性能运行基于MFC的应用。MFC运行时库包含在这些设备的ROM中,所以应用程序仅仅是代码,而不再是代码加MFC运行时库。

但正像速度和运行库都已经加到平台里去一样,MFC正逐渐没落。微软不再推荐MFC应用开发,取而代之的是.NET开发。所以你应该用MFC开发吗?我的回答是不要再用MFC开发新项目。对于旧项目,仍然有机会用MFC,但仅仅只是因为这些项目没有移植到其他开发平台上




Windows CE开发工具

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -