Windows 7与Windows Phone 7传感器融合项目

在这篇文章中,将探讨如何将Windows 7和Windows Phone 7的一些特性结合起来,创造出一个令人赞叹的混合体验。Windows 7引入了许多新功能,其中之一就是Sensor API,它提供了一个标准接口来访问各种类型的传感器,如加速度计等。之前已经讨论过如何使用Windows API Code Pack在C#应用程序中使用这个API。

Windows Phone 7也自带了一些传感器,其中包括加速度计。那么,如果将Windows Phone 7的加速度计传感器作为Windows 7的标准设备来使用,会怎么样呢?

实现步骤

要实现这个想法,可以将其分解为几个步骤:

首先,将创建一个虚拟的软件驱动程序。这个驱动程序将实现成为Windows 7加速度计传感器所需的一切,但在这个阶段,它将只返回恒定的数据。为了编写Windows 7的传感器驱动程序,需要使用用户模式驱动框架(UMDF),这是一个类似于COM的C++框架,用于在Windows 7中编写用户模式驱动程序。

接下来,需要找到一种方法,将Windows Phone设备上的加速度计数据传输到PC。一种可能的方法是实现一个本地WCF服务,该服务将由手机持续调用,以传输加速度计数据。这将需要一个在手机上运行的应用程序来持续传输数据。

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

现在,有一个返回虚拟加速度计数据的软件驱动程序,以及一种从Windows Phone获取真实加速度计数据的方法,所需要做的就是将这些点连接起来,使加速度计驱动程序返回真实数据。为此,需要某种进程间通信来将数据从WCF服务传输到驱动程序。

项目概览

向介绍Windows Phone加速度计驱动程序for Windows 7!可以在CodePlex项目网站上找到这个项目的完整源代码。

实现细节

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

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

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

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

如何安装?

从CodePlex项目网站下载并解压项目二进制文件或源代码。以管理员身份打开CMD,转到\Driver\Install\文件夹。根据操作系统位数,运行install_wp7_driver_32bit.bat或install_wp7_driver_64bit.bat来安装驱动程序。当出现以下通知时,选择"Install this driver software anyway":这应该需要大约1-2分钟才能完成。在控制面板中启用已安装的传感器。以管理员身份运行WCF服务。如果从Visual Studio运行,请确保以管理员身份运行Visual Studio。在连接到PC的真实设备上运行Windows Phone客户端,并输入PC(LAN)IP。就是这样!现在可以坐下来享受使用PlaneDemo应用程序或SensorDiagnostics,或任何其他使用加速度计传感器的软件的旅程。

如何卸载?

如果想卸载驱动程序,只需转到设备管理器,从传感器类别中选择"WP7 Accelerometer Sensor"设备,从上下文菜单中选择卸载,并确保勾选了删除驱动程序的复选框。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485