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





5.00/5 (5投票s)
如何将 Windows Phone 用作 Windows 7 加速计传感器
我有一个很棒的主意!(其实我是在 6 个月前就有这个想法了,请多多包涵)。
我的想法是将 Windows 7 中的一些功能与 Windows Phone 7 中的一些功能结合起来,创造出一种辉煌的融合!
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 的博客 借来的。
如何安装?
- 从 CodePlex 项目站点 下载并解压项目二进制文件或源代码。
- 以管理员身份打开命令提示符
- 转到文件夹 \Driver\Install\
- 根据您的操作系统位数,运行 install_wp7_driver_32bit.bat 或 install_wp7_driver_64bit.bat 来安装驱动程序。
- 当出现以下通知时,选择“仍要安装此驱动程序软件”
- 在控制面板中启用已安装的传感器。
- 以管理员身份运行 WCF 服务。如果您从 Visual Studio 运行它,请确保您以管理员身份运行 Visual Studio。
- 在连接到 PC 的情况下,在真实设备上运行 Windows Phone 客户端,并输入您的 PC (LAN) IP。
- 就是这样!您现在可以放松一下,享受使用
PlaneDemo
应用程序或SensorDiagnostics
,或任何其他使用 加速度计传感器的软件带来的乐趣。
如何卸载?
如果您想卸载驱动程序,只需转到设备管理器,从传感器类别中选择“WP7 加速度计传感器”设备,从上下文菜单中选择卸载,并确保勾选删除驱动程序的复选框。
最后说明
我见过该项目在真实设备和手机模拟器上都能正常工作,但它不是一键式安装。我预计用户在安装时会遇到问题。如果您遇到任何问题,请在 CodePlex 项目站点论坛 页面发帖,我会尽力提供帮助。
另外,如果您想改进源代码(也许添加 GPS 支持?)或安装过程,我很乐意包含您的改进,甚至将您列为 CodePlex 项目成员之一。
这个项目纯粹是为了好玩,因为它结合了许多有用的技术来创造真正的价值。在这些技术中,您可以找到 C++、COM、UMDF、C#、WCF、WP7 等。
暂时就到这里,
Arik Poznanski。