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 提供了一组编程对象,包括脚本对象,用于处理位置信息。
- “位置”和其他传感器“控制面板使计算机管理员可以为每个用户设置传感器,包括位置传感器。
以下各节介绍了其中每个组件。
体系结构图
下图显示了组件之间的关系。
设备驱动程序接口
传感器制造商可以创建设备驱动程序来将传感器与 Windows 7 连接。 传感器设备驱动程序是使用基于 Windows 用户模式驱动程序框架(UMDF)的 Windows 便携式设备(WPD)驱动程序模型实现的。许多设备驱动程序都是使用这些框架编写的。 由于这些技术已建立,经验丰富的设备驱动程序程序员会发现编写传感器驱动程序是一项熟悉的任务。 传感器 DDI 使用特定的 UMDF 和 WPD 数据类型和接口,并定义特定于传感器的 WPD 命令和参数(如果需要)。 有关创建传感器设备驱动程序的详细信息,请参阅 Windows 驱动程序工具包。
传感器 API
借助传感器 API,C++开发人员可以使用一组 COM 接口创建基于传感器的程序。 API 定义了用于执行常见传感器编程任务的接口,这些任务包括按类别、类型或 ID 管理传感器事件、管理传感器事件、使用单个传感器和传感器集合以及处理传感器数据。 Windows SDK 包括头文件、文档、示例和工具,可帮助指导软件开发人员了解如何在 Windows 程序中使用传感器。 本文档介绍传感器 API。
位置 API
位置 API 基于传感器 API,提供了一种在保护用户隐私的同时检索有关地理位置的数据的简单方法。 Location API 通过一组表示对象的 COM 接口提供其功能。 这些对象可由了解如何通过 C++ 编程语言或脚本语言(如 JScript)使用 COM 的程序员使用。 通过脚本支持,可以轻松访问本地计算机区域中运行的项目的位置信息,例如小工具。 Windows SDK 包括头文件、文档(包括脚本参考文档)、示例和工具,可帮助 Web 和软件开发人员了解如何在其程序中使用位置信息。
位置和其他传感器控制面板
Windows 7 包含一个控制面板,允许计算机管理员启用或禁用系统范围内的传感器或每个用户。 由于某些传感器可以公开敏感数据,因此此用户界面使管理员能够控制所有程序是否有权访问每个用户的每个传感器。 用户还可以查看传感器属性并更改用户界面中显示的传感器说明。
控制面板还提供“默认位置”页,使用户能够提供其位置。 当没有传感器可用时,平台将使用用户提供的位置。 用户可以提供公民地址字段,其中包括街道地址、城市、州或省/自治区以及国家或地区。