65.9K
CodeProject 正在变化。 阅读更多。
Home

将 Windows Phone 用作 Windows 7 加速计传感器

starIconstarIconstarIconstarIconstarIcon

5.00/5 (5投票s)

2011年8月15日

Ms-PL

4分钟阅读

viewsIcon

23583

如何将 Windows Phone 用作 Windows 7 加速计传感器

我有一个很棒的主意!(其实我是在 6 个月前就有这个想法了,请多多包涵)。

我的想法是将 Windows 7 中的一些功能与 Windows Phone 7 中的一些功能结合起来,创造出一种辉煌的融合!

image

Windows 7

Windows 7 的新功能之一是 传感器 API,它提供了一个标准接口,用于访问各种类型的传感器,例如 加速度计等。

我以前 写过关于如何使用 Windows API Code Pack 从 C# 应用程序中使用此 API 的文章。

Windows Phone 7

Windows Phone 7 自带了一些传感器,其中就包括:加速度计!

想法

如果我们能将 Windows Phone 7 的加速度传感器用作 Windows 7 上的标准设备呢?

路线图

那么,我们该如何实现呢?让我们将这个想法分解为几个步骤:

第一步 - 创建一个软件驱动程序

我将从创建一个虚拟软件驱动程序开始。这个驱动程序将实现成为标准 Windows 7 加速度计传感器所必需的功能,但在此阶段只会返回常量数据。

为了编写 Windows 7 的传感器驱动程序,我需要使用 用户模式驱动程序框架 (UMDF),这是一个类似 COM 的 C++ 框架,用于在 Windows 7 中编写用户模式驱动程序。

第二步 - 将 Windows Phone 7 的传感器数据传输到 PC

下一步是找到一种方法,将加速度计数据从 Windows Phone 设备传输到 PC。一种可能的方法是,在桌面实现一个本地 WCF 服务,手机会不断地使用加速度计数据调用该服务。这将需要一个应用程序在手机上运行,以保持数据流。

第三步:从手机上消耗 WCF 服务

使用上一步的服务,我们现在可以在一个简单的 Windows Phone 应用程序中消耗它,该应用程序的所有功能就是使用手机 API 获取加速度计传感器数据,并用最新数据调用 WCF 服务。

第四步:让软件驱动程序消耗 Windows Phone 7 数据

现在我已经有了一个返回虚拟加速度计数据的软件驱动程序,并且有办法从 Windows Phone 获取真实的加速度计数据,我所需要做的就是将它们连接起来,让我的加速度计驱动程序返回真实数据。为此,我需要某种进程间通信来将数据从 WCF 服务传输到驱动程序。

长话短说…

我向您展示 Windows Phone 加速度计驱动程序 for Windows 7

此项目的完整源代码可以在 CodePlex 项目站点 上找到。

一些实现细节

实际的驱动程序实现起来相当容易,因为我使用了 CodeProject 文章“为 Windows 7 上的 Wiimote 编写传感器驱动程序”由 Rajasekharan Vengalil 作为我的 Windows Phone 7 驱动程序的基础。您可以在名为 WP7AccelerometerDriver 的项目中找到驱动程序源代码。

如前所述,我实现了一个简单的本地 WCF 服务,用于将加速度计数据从手机传输到驱动程序。您可以在名为 WP7AccelerometerService 的项目中找到该服务源代码。该服务使用命名管道与驱动程序通信。

手机应用程序是一个非常简单的应用程序,它消耗 WCF 服务,并在有新的加速度计值可用时调用它。您可以在名为 WP7AccelerometerClient 的项目中找到它的源代码。

最后,如果您想检查加速度计驱动程序的功能,您可以使用 SensorDiagnostics 项目或更有趣的 PlaneDemo 项目,这是我从 Sergey Zwezdin 的博客 借来的。

如何安装?

  1. CodePlex 项目站点 下载并解压项目二进制文件或源代码。
  2. 管理员身份打开命令提示符
  3. 转到文件夹 \Driver\Install\
  4. 根据您的操作系统位数,运行 install_wp7_driver_32bit.bat install_wp7_driver_64bit.bat 来安装驱动程序。

    image

  5. 当出现以下通知时,选择“仍要安装此驱动程序软件

    image
    这大约需要 1-2 分钟完成。

  6. 控制面板中启用已安装的传感器。

    image

  7. 以管理员身份运行 WCF 服务。如果您从 Visual Studio 运行它,请确保您以管理员身份运行 Visual Studio。

     

    image

  8. 在连接到 PC 的情况下,在真实设备上运行 Windows Phone 客户端,并输入您的 PC (LAN) IP。

    image

  9. 就是这样!您现在可以放松一下,享受使用 PlaneDemo 应用程序或 SensorDiagnostics,或任何其他使用 加速度计传感器的软件带来的乐趣。

    image

    image

如何卸载?

如果您想卸载驱动程序,只需转到设备管理器,从传感器类别中选择“WP7 加速度计传感器”设备,从上下文菜单中选择卸载,并确保勾选删除驱动程序的复选框

image

最后说明

我见过该项目在真实设备和手机模拟器上都能正常工作,但它不是一键式安装。我预计用户在安装时会遇到问题。如果您遇到任何问题,请在 CodePlex 项目站点论坛 页面发帖,我会尽力提供帮助。

另外,如果您想改进源代码(也许添加 GPS 支持?)或安装过程,我很乐意包含您的改进,甚至将您列为 CodePlex 项目成员之一。

这个项目纯粹是为了好玩,因为它结合了许多有用的技术来创造真正的价值。在这些技术中,您可以找到 C++、COM、UMDF、C#、WCF、WP7 等。

暂时就到这里,
Arik Poznanski。

© . All rights reserved.