Windows 传感器和位置平台的概述

Windows 7 操作系统为传感器设备提供内置支持。 这包括对位置传感器的支持,如 GPS 设备。 作为此支持的一部分,Windows 传感器和位置平台为设备制造商提供了一种向软件开发人员和使用者呈现传感设备的标准方法。 同时,该平台向开发人员提供了一个用于处理传感器和传感器数据的标准化 API 和设备驱动程序接口 (DDI)。

关于传感器设备

传感器的配置多种多样,从某种角度来说,几乎所有提供物理现象数据的装置都可以称为传感器。 虽然我们通常认为传感器是一种硬件设备,但逻辑传感器也可以通过在软件或固件中模拟传感器功能来提供信息。 此外,单个硬件设备可以包含多个传感器。

Windows 传感器和位置平台将传感器划分为不同的类别,这些类别是对传感器设备种类的宽泛划分,而类型则表示具体的传感器种类。 例如,视频游戏控制器中的传感器可探测玩家手的位置和运动(比如在视频保龄球游戏中),这类传感器将归为方向传感器,但其类型则是三维加速感应器。 在代码中,Windows 通过使用全局唯一标识符 (GUID) 来表示类别和类型,其中许多是预定义的。 设备制造商可以根据需要,通过定义并发布新的 GUID 来创建新的类别和类型。

位置设备是一种非常有趣的类别。 目前,大多数人都熟悉全球定位系统 (GPS)。 在 Windows 中,GPS 传感器是“位置”类别的一部分。 位置类别还可能包括其他传感器类型。 其中一些传感器类型是基于软件的,例如基于 Internet 地址提供位置信息的 IP 解析程序、根据附近的信号塔确定位置的移动手机电话塔三角仪,或从连接的无线网络集线器读取位置信息的 Wi-Fi 网络位置提供程序。

关于平台

Windows 传感器和位置平台由以下开发人员和用户组件构成:

  • 通过 DDI,Windows 能够提供一种连接传感设备与计算机以及传感设备用于向其他子系统提供数据的标准方式。
  • Windows 传感器 API 提供了一组用于处理连接的传感器和传感器数据的方法、属性和事件。
  • 基于 Windows 传感器 API 构建的 Windows 位置 API 提供一组编程对象(包括脚本对象)来处理位置信息。
  • “位置和其他传感器”控制面板使计算机管理员能够为每个用户设置传感器,包括位置传感器。

以下各部分对上述各组件进行了介绍。

体系结构示意图

下图显示了组件之间的关系。

sensor and location platform diagram

设备驱动程序接口

传感器制造商可以创建将传感器连接到 Windows 7 的设备驱动程序。 传感器设备驱动程序通过使用 Windows 便携设备 (WPD) 驱动程序模型实现,该模型基于 Windows 用户模式驱动程序框架 (UMDF)。许多设备驱动程序都是使用这些框架编写的。 由于这些技术已十分成熟,因此经验丰富的设备驱动程序程序员对编写传感器驱动程序不会感到陌生。 传感器 DDI 使用特定 UMDF 和 WPD 数据类型和接口,并在需要时定义特定于传感器的 WPD 命令和参数。 有关创建传感器设备驱动程序的详细信息,请参阅 Windows 驱动程序工具包。

API

使用传感器 API,C++ 开发人员可以通过使用一组 COM 接口来创建基于传感器的程序。 API 定义用于执行常见传感器编程任务的接口,这些任务包括按类别、类型或 ID 管理传感器、管理传感器事件、使用单个传感器和传感器集合以及处理传感器数据。 Windows SDK 包括头文件、文档、示例和工具,可帮助软件开发人员了解如何使用 Windows 程序中的传感器。 本文档介绍了传感器 API。

位置 API

位置 API 是基于传感器 API 构建的,它提供了一种简单的方法来检索有关地理位置的数据,同时保护用户隐私。 位置 API 通过一组表示对象的 COM 接口提供其功能。 了解如何通过 C++ 编程语言或在脚本语言(如 JScript)中使用 COM 的程序员可以利用这些对象来完成工作。 借助脚本支持,本地计算机区域中运行的项目(如小工具)便能够轻松访问位置数据。 Windows SDK 包括头文件、文档(包括脚本参考文档)、示例和工具,可帮助 Web 和软件开发人员了解如何在其程序中使用位置信息。

“位置和其他传感器”控制面板

Windows 7 包含一个控制面板,计算机管理员可通过它启用或禁用系统范围内的传感器或为每个用户启用或禁用传感器。 由于某些传感器可以公开敏感数据,因此管理员能够通过此用户界面控制所有程序是否有权访问每个用户的每个传感器。 用户还可以查看传感器属性并更改用户界面中显示的传感器说明。

控制面板还提供“默认位置”页,使用户能够提供其位置。 当没有传感器可用时,平台将使用用户提供的位置。 用户可以提供公民地址字段,其中包括街道地址、城市、省/自治区/直辖市以及国家或地区。

关于传感器 API

Windows 硬件开发人员中心网站

Windows 开发人员中心