Embedded 版 (精华区)
发信人: redfox (NetAnt), 信区: Embedded_system
标 题: 你会编写Windows CE应用程序吗?
发信站: 哈工大紫丁香 (2001年06月28日17:07:46 星期四), 转信
你会编写Windows CE应用程序吗?
南京市
王珂
一、概述
随着移动办公和信息化的普及,笔记本电脑和掌上电脑变得越来越普及。掌上电脑的操作
平台主要有Microsoft Windows CE和3Com Palm。Windows CE秉承了桌面Windows平台的很
多优点:易于使用、可扩展性好。Windows CE也提供了丰富的编程工具。本文将讨论如何
编写Windows CE应用程序。
二、选择合适的编程工具
要编写Windows CE应用程序,你需要使用Windows CE开发工具包。该工具包将成为你的开
发系统。工具包的选择由你使用的编程语言而定,你可以选择的编程语言有Visual C++、
Visual Basic和Visual J++。但是最佳选择莫过于Visual C++,因为掌上电脑资源有限,
C++编译器效率高、性能好,应用程序结构紧凑;而Visual Basic应用程序代码过于冗长
且效率低下;Visual J++在确定平台上的运行性能不如Visual C++。在你决定编程语言之
后,便需要安装相应的工具包。Windows CE开发工具包有如下几种:
Windows CE Toolkit for Visual C++
Windows CE Embedded Toolkit for Visual C++
Windows CE Toolkit for Visual Basic
Windows CE Toolkit for Visual J++
你选择的工具包将成为你现有IDE的一部分,并提供调试和测试Windows CE应用程序的工
具。比如,Windows CE Toolkit for Visual C++提供了一个仿真程序,允许你在
Windows桌面系统上(如Windows NT)监测Windows CE应用程序的执行情况,而不需要把
它们装载到Windows CE机器上再调试;Windows CE Toolkit for Visual C++和Windows
CE Toolkit for Visual Basic都提供了从桌面系统访问远程设备、并在远程设备上执行
特定的Windows CE任务的工具。
当然, 工具包中也提供了一些为Windows CE定制了的技术和工具,如COM(Component
Object Model,组件对象模型)、MFC(Microsoft Foundation Class,微软基类库)、
ATL(Active Template Libraries,活动模板库)以及NLS(National Language
Support国家语言支持)。如果你精通桌面开发,那么一定非常熟悉这些技术,这里不再
赘言。
三、将Win32应用程序转换成Windows CE应用程序
Windows CE是一个32位操作系统,因此在编写Windows CE应用程序时,你可以重用桌面
Windows应用程序的大部分代码。尽管将现有Win32代码转变成Windows CE代码比从零做起
快的多,你必须在转换时始终牢记Windows CE操作系统与桌面平台的很多不同:
硬件设计和功能不同。比如,有限的内存将会大大影响你对图形的操作速率。
用户界面的不同。传统的用户界面诸如键盘、鼠标和显示器将不再用于Windows CE操作系
统。
Windows CE API与Win32 API的不同。Windows CE支持Win32 API的一部分函数,同时又扩
充了一些特定的Windows CE函数,如命令条(Command Bar)API。
字符集的不同。Windows CE字符集类似于Windows NT而不同于Windows 9x,它是基于
Unicode的。
下面详细讨论编写Windows CE应用程序是应当注意的重点问题。
3-1.硬件
运行Windows CE的机器(以下简称Windows CE机器)通常比台式计算机的资源贫乏的多,
但它们也有很多特别的设备,比如有的Windows CE机器配备了全球卫星定位系统(Global
Positioning System,GPS)。因此开发中,对于Windows CE的硬件配置是要重点考虑的
。而通常最重要的几点莫过于内存、电源、人机交互设备(详见3-2节)以及通讯设备。
3-1-1.内存管理
Windows CE被设计用来运行在很少的内存上的,它们通常也没有大容量存储设备。
Windows CE支持了一些特有的管理有限内存的函数、结构、消息。比如,如果内存资源在
操作中变得紧缺时,Windows CE就有一个减小内存使用以及恢复可用内存的函数。该函数
的关键是WM_HIBERNATE消息,它通知应用程序"内存已经很少了。这个消息在Win32平台中
并不存在,你必须针对Windows CE程序实现该消息的处理程序。
3-1-2.电源管理
Windows CE机器的电源通常基于电池的,而且电量很有限。开发时应遵循下面的原则来使
用大多数有限的能量资源:
避免占用不必要的CPU资源。
限制使用一些常用的桌面机器的硬件,因为他们能够迅速消耗电池,比如Modem。
不要"超负荷"使用电池资源。
3-1-3.通讯设备
如前所述,Windows CE提供了Modem接口,另外,它也支持一些桌面系统不常用到的通讯
设备,包括红外线收发器、广播接收器、GPS等,编写相关应用程序时要特别考虑。
3-2.用户界面
Windows CE机器和桌面系统的最大差别就在于用户界面。
显示器是关键之一。Windows CE机器中显示器通常很小,而且分辨率也不高。尽管一些机
器有彩色显示器,但是还有很多只支持灰度图像。因此,对于那些显示器无法表示的信息
(如高分辨率图像信息)来说,你需要自行开发一种方法来传达给客户。
另一个关键的用户界面的组成部分是指点设备,它让用户能够与用户界面中的很多元素交
互。尽管Windows CE机器中没有鼠标,但很多Windows CE机器都拥有触摸屏以及手写笔等
类似于鼠标的指点设备。但是还有一些Windows CE界面根本没有这些设备,它们依赖于其
它技术进行导航,比如方向键,另外还有一些革新式的交互方式,比如语音导航。
还有一个需要注意的地方就是Windows CE机器不可能配备键盘,即使有虚拟键盘,也很难
操作,因此在编写应用程序过程中,尽量让用户少用键盘录入信息。
3-3.应用程序编程接口(API)
Windows CE是32位操作系统,它不支持任何16位函数,还有一些32位函数没有完全被实现
。同时, Windows CE支持并扩展了一些Win32 API的子集。
另外,Windows CE支持了COM/OLE的一部分,你可以重用使用COM/OLE、MFC或ATL的应用程
序代码,再作一些微小的修改即可。
3-4.Windows CE字符集
Windows CE像Windows NT一样,是Unicode环境。尽管Windows CE支持ASCII功能来进行文
件交换,但是Windows CE的本地文本格式是Unicode。下面列出了将基于ASCII的代码转换
到基于Unicode代码的注意事项:
在程序中包含tchar.h头文件。该文件包含所有必要的转换。
使用Win32字符串函数,而不要使用C运行库中等价的函数。
使用TCHAR或者LPTSTR来声明字符串变量。使用TCHAR声明字符串变量的代码既能够作为基
于Unicode代码编译,又能够作为基于ASCII代码编译。
使用Text宏来表示字符串,比如Text("a string")。使用Text宏的优点在于:当使用
UNICODE编译标志编译时,该字符串作为Unicode代码被编译;当使用ANSI编译标志编译时
,该字符串又可以作为ASCII代码被编译。
使用sizeof(TCHAR)操作符来确定你的代码对于Unicode和ASCII都有效。当你增加指针时
,记住ASCII字符是单字节的,但是Unicode字符则是双字节的。
四、调试和测试Windows CE应用程序
一组有效的调试工具能够缩短调试周期,并使你能够容易的判断出问题所在。Windows CE
IDE提供了一组仿真和远程调试工具,以及一些特别的调试工具。
4-1.桌面仿真调试和测试
Windows CE开发工具包中的桌面仿真工具让你能够在任何一台运行Windows NT的机器上编
写并调试Windows CE应用程序,而不必把它们下载到Windows CE机器上。你甚至可以使用
仿真器来编写一个Windows CE应用程序,而根本用不到Windows CE机器。但是,尽管你能
够在仿真器上判断你的应用程序的很多性能和表现情况,最终,当你的应用程序在仿真环
境中正常运行之后,你应当把它们下载到目标设备中做作后的测试和评估。根据鄙人的开
发经验,在Windows CE机器上运行的效果与Windows NT上的运行效果还有很多不同,大部
分情况是:更慢了。
测试时,除了测试应用程序的缺点和稳定性之外,程序的易用性也十分重要,因为大多数
Windows CE机器仅有一个小的桌面区域作为访问设备,这将带来很多意想不到的问题。
4-2.远程调试和测试
除了仿真器之外,Windows CE还提供了一些工具,让你能够在应用程序运行时检测它们的
性能。这些远程工具在下表中列出:
为了使用远程工具,你必须首先用一根标准串行缆线将你的台式机与掌上机相连接。
4-3.非标准调试和测试
如果你正在开发Windows CE平台上的软件,你可以使用Windows CE仿真环境以及远程工具
来调试和测试你的应用程序。但是,如果你正在为其它基于Windows CE的嵌入系统开发应
用程序时,你就需要自行设计测试和调试工具。幸运的是,Windows CE API提供了所有必
要的编写调试器的函数。由于编写调试器比较复杂,本文暂不深究,以后有机会单独讨论
该问题。
五、小结
Windows CE正在被很多人接受,而Windows CE上的应用程序还比较少,因此Windows CE应
用程序将在一定时间和范围内具有不少潜力和市场。尤其是Windows CE上的网络编程有可
能成为热点。
编写Windows CE应用程序一定要"惜墨如金",提高代码运行效率。
测试Windows CE应用程序时,务必在Windows NT上测试比较成熟之后再下载到Windows
CE上,过多的安装/卸载和在Windows CE机器上运行低效的应用程序有可能降低系统速度
。
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.224.81]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.343毫秒