>
首页 » 业界动态 » Windows CE 软件开发入门(三)

Windows CE 软件开发入门(三)

作者:  时间:2008-08-07 09:16  来源:52RD嵌入式开发

意外情况处理
  意外情况处理是强大的编程技术,相应一套的WIN32 API 起函数能容易的发现未预料到的错误状况,并且使之恢复。结构化的意外情况处理,允许危险的段的代码可能由于硬件资源的问题、设备的冲突和微小的编码错误而导致失败,以使这部分程序与其余的应用程序分开。这保护了应用程序,使之免于过早的终止或者产生敏感的系统问题。结构化的意外情况处理包括定义一系列声明作为保护,并且为第一套的声明定义了另一个套声明作为意外情况句柄。 意外情况句柄定义了一个或多个声明来保障系统的运行,而不管保护声明的现有的状态。在大多数32 位Windows平台上应用WIN32 API 的程序员在运用意外情况句柄的时候通常有两种选择,用C或 C++ 编写应用程序,并且利用WIN32提供的处理意外情况的宏,或者利用C++ 编写应用程序,并且使用C++ 语言定义的意外情况处理函数。
  对于这种程序的编写,Windows CE的开发者因无法访问C++的(面向Windows CE的Visual C++ 目前还不支持意外情况处理,所以必须使用WIN32 API的意外情况处理宏。为了应用WIN32意外情况处理,你将使用一套在WIN32 API 中被定义的宏。 下面一段代码显示其基本概念:
  __try {
  // The statements in here have a possibility of failure
  // and so are guarded.
  }
  __finally {
  // This is the exception handler. This code will execute
  // after the guarded statements, no matter what happened
  // in the guarded block of code above.
  }
  // This code will execute normally if the program flow allows
  // it (no goto, exit, etc.)
  __try 以及__finally 宏产生了使用意外情况句柄的所必要的底层代码。意外情况的处理对诸如在嵌入式的应用程序中的那些普通的多线程序是有用的。WIN32结构化意外情况处理宏 是一种容易并且强大的保护应用程序使之免受未预料到的失败的方法。

  设备处理
  有无数硬件设备(外围设备)与应用Windows的平台(Windows NT以及 Windows 95)台式机是兼容的,并且每一年都有更多的东西在市场上涌现。而Windows CE的平台,通常不支持台式计算机支持的设备的很多品种的外围硬件。 然而,为一嵌入式的的系统创造可靠的设备接口在嵌入式的程序设计的过程中,是比较富有挑战性的部分。 这部分地因为典型的嵌入式的系统接口的时序与其它可操作性的需要远比台式电脑计算系统和应用程序的更难。
  WIN32 API是如何帮助的 WIN32 API在你的硬件平台为你提供一套一致的基于流的接口。为了使用设备,你首先利用适合于设备类型的函数打开它。 对于大多数设备,你利用的函数是在下列例子中的CreateFile 函数:HANDLE hPort = CreateFile("COM1"); // Open the serial port CreateFile函数打开规定的设备(串口)并且返回用于以后在该种设备上的操作(例如读和写)的句柄。 各种各样函数的(包括ReadFile ,WriteFile ,LockFile 和其他)接受这个句柄为参数,并且允许你(例如)读写数据,检查设备状态,并且将从其它程序的存取被锁住的设备或者文件列入清单。 文件输入输出操作被处理成与其它设备类型利用同样的API 函数,并且在文件之内包括随机的访问的函数。 被若干程序或线索同时访问的设备和文件可以分区域地利用LockFile 函数锁定。在你的应用程序已完成设备或者文件之后,它将调用CloseFile 函数关闭设备,并且进行必要的清除设备的工作。
  同步和异步的设备的处理嵌入式系统的经常有关键的设备有时序需要。 对于这个理由,对底层的操作系统的软件接口必须能够在软件层次上管理同时(或者几乎同时)的系统中不同类型的设备的事件。WIN32 API 支持对设备的同步和异步的访问,并且用复杂的设备接口设计。同步的接口是那些在软件需要从设备得到动作的要求,然后等候结果。在同步的设备接口中,最常用的是前面已经提到的ReadFile 以及WriteFile函数。当在同步I/O中使用的时候,不论你与磁盘上的文件、并口或是串口、一个通道或其它类型的设备接口时,都是公用的并且是兼容的。
  异步的接口是那些设备要求应用程序为之服务的接口。一个异步的设备的好的例子是键盘。适当和适时的处理异步事件,对于许多嵌入式应用程序是至关紧要的。你所访问的给定的设备的方法,取决于那个设备的特性和你开发的特定的应用程序的要求。如果你在基于你的Windows CE的硬件平台上创建一个全新的设备(和设备驱动程序),你可以既从你的硬件设备和驱动器的层次,又可以从应用程序的层次有许多选择。

  定制设备和WIN32
  尽管嵌入式系统可以支持较小数量的设备,嵌入式系统能形成唯一的和挑战型的设备接口问题。当你开发一个新的硬件平台并且它支持输入输出设备,在模你设计的不同层次上,你将不得不作出决策和折衷方案。例如,除非你只使用通常的off-the-shelf硬件,你必然套写用户设备驱动程序支持你的新外围设备。 你也能需要配置你的Windows CE来包含一些设备处理必要的组件。同时从应用程序的层次,为满足新的设备的需要,你将需要写接口代码。在有如此多变量的情况下,你如何保持你的设备的一定程度的一致行呢?答案就在WIN32 API 中。在WIN32 API环境下,写你的目标驱动程序,你有理由自信的认为那些新设备的接口的应用程序开发者能够创造可信的,可检验和可维护的基本代码。Windows CE设备驱动程序开发工具包,或者简称DDK ,提供了如何创造WIN32功能强大的设备驱动程序信息和范例。

  设备的类型
  Windows CE支持两种基本类型的设备驱动程序,内置固化的驱动程序和可安装的驱动程序。 如同名字所暗示的,内置固化的驱动程序是被指定用于一个给定的Windows CE的硬件平台的设备。Windows CE的嵌入式系统设计者有责任提供一个内置固化的驱动程序来驱动系统所包括的设备。例如,许多Windows CE平台有一个LCD 触摸屏。这些平台的制造厂为他们的设备提供设备驱动程序,使此硬件可以用于Windows CE操作系统。在完备的系统中,这些内置固化的驱动程序位于Windows CE只读内存中内核的周围。
  可安装的设备驱动程序是被设定为为了任何与Windows CE 硬件平台临时连接的外围的设备。这个类型的设备包括:调制解调器,打印机,数字的照相机,PC卡,以及任何数量的其它外部的设备。 可安装的设备驱动程序可能位于只读内存中,但是更典型与临时性的设备的接口的应用程序软件一同装载。

  总结
  本文已为概略地介绍了面向Windows CE的WIN32 API,其目的是为了突出这种被广广泛应用的并且十分重要的API的一般的特点和优点。有许多其它的细节你需要在第一次使用Windows CE嵌入式产品之前来学习掌握。(完)

 

相关推荐

数字适配器模块使NI FlexRIO功能更多、测量更快

FPGA  API  2011-08-12

高通扩展的Gobi连接解决方案组合获得广泛支持

高通  3G  4G  Gobi  API  2010-07-06

四家公司联袂打造与硬件无关的通用型NFC API接口

2.5G和3G多媒体手机软件结构设计方法的变革

3G  API  2009-04-26

BSQUARE推出免费电路板支持套件

BSQUARE  TI  API  2008-11-27

Laird Technologies最新LT2510 RF模块

FlexRF  API  2008-11-11
在线研讨会
焦点