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

Working with Ivy Bridge Ultrabook Sensors

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (1投票)

2012 年 12 月 6 日

CPOL

5分钟阅读

viewsIcon

7867

在这最后一篇文章中,我想更深入地探讨一下设备附带的传感器。

我已经拥有英特尔的预览版 Ivy Bridge 超级本两个多月了。它是一款带有少数预生产缺陷的预览设备,但它也是一款功能强大的开发人员机器,小巧轻便,配备了响应灵敏的触摸屏,非常适合 Windows 8。您可以阅读我对该设备的初步印象以及我的首次后续评测

在这最后一篇文章中,我想更深入地探讨一下设备附带的传感器。作为程序员,我们可以轻松地将这些传感器集成到我们的应用程序中,尤其是 Windows 8 应用程序。我已经描述了该设备支持的各种传感器。要开始针对这些传感器进行编码,首先,请确保您已为您的计算机安装了最新的驱动程序。尤其是现在,许多这些设备都是全新的,并且更新频繁。接下来,我建议您下载Windows 8 应用样本套件,其中包含 145 个不同的样本(并非所有样本都与传感器相关,但仍然,这应该能让您忙上一段时间)。

让我们看一下其中的几个样本及其提供的代码。首先,让我们看一下加速计传感器样本代码,这对于所有其他传感器来说都相当典型。首先,我们需要获取传感器的实例,这通过调用 GetDefault() 方法来实现。

接下来,我们可以像这样从传感器中读取单个读数。

运行时,实时样本看起来像这样(在这里我将笔记本电脑向左侧倾斜了)。

 

您可以看到 X 轴读数几乎显示为 –1,这是因为我倾斜了笔记本电脑的方式。当它在水平表面上静止时,X 和 Y 的读数几乎为零,而 Z 轴为 –1。本质上,当除了重力之外没有其他外力作用在该设备上时,您检测到的就是重力。当它平放时,您可以将 X 轴想象成从您的 Caps Lock 键开始,朝 Enter 键方向延伸,而 Y 轴从触摸板开始,朝屏幕方向延伸。Z 轴垂直穿过您的键盘。因此,如果您将笔记本电脑上下颠倒,Z 将变为正 1。看到这个设备在战斗机上的读数会很有趣……

对于物理学爱好者来说,一个有趣的问题是:如果我将笔记本电脑扔到空中,在它上升时、在它达到最高点时以及在它下落时,读数会是多少,假设它保持完全水平,这样我们只关心 Z 轴?

与加速计相关的是倾角计传感器,您可以类似地读取它(如此相似,我将不再浪费时间向您展示代码截图)。主要区别在于结果读数是俯仰 (Pitch)、横滚 (Roll) 和偏航 (Yaw)。对于这些,您可以将笔记本电脑键盘想象成一架飞机,尾部在触摸板处,机头在屏幕处。抬高尾部会导致负俯仰。抬高任何一侧都会导致横滚变化。偏航是与加速计不同的地方,因为它指的是绕 Z 轴的旋转。也就是说,如果您将笔记本电脑平放在桌子上,但转动它,这就是改变偏航(阅读更多关于飞行动力学术语)。

这是应用程序运行时的截图,我正在抬起笔记本电脑的右侧。

您可以看到如何利用这些传感器构建游戏,尤其是在平板电脑形态下。

还有一个指南针,您可以像访问其他传感器一样访问它。它的事件处理程序看起来像这样。

在这台笔记本电脑上,“指南针的针”似乎指向键盘的右侧,因为我不得不将它指向北方才能获得 0 度读数。当用于平板电脑形态时,这可能最有意义(从平板电脑的顶部伸出)。

陀螺仪提供基于角速度的 X、Y 和 Z 轴值的类似读数。静止时,这些读数都为零,但如果您移动设备,它们将显示瞬时效应。API 与加速计和倾角计的 API 相同。

使用 GeoLocator(GPS 阅读器)略有不同。您可以简单地实例化其中一个类来开始使用它。从 GeoLocator 实例中读取位置数据的代码如下所示。

最后,LightSensor 让您可以检测环境光。您就像访问大多数其他传感器(如加速计)一样访问传感器,其事件处理程序会产生一个 LUX 值。

您可以使用此样本来定位设备上的光传感器,如果您不知道它在哪里(在这台笔记本电脑上,它位于屏幕顶部的集成网络摄像头旁边)。如果您遮挡传感器,读数会降至 0。在室内照明(晚上)下,我能读到的最亮值略高于 20,000,但这需要将其紧贴灯泡。当我使用笔记本电脑时的“正常”读数似乎在 15-20 左右,具体取决于传感器上是否有直射光。

摘要

如您所见,这款设备附带的传感器有很多用途,我相信其他为 Windows 8 设计的设备也将配备许多这些传感器。检测传感器是否存在和可用的代码当然也包含在这些样本中,因为显然并非所有设备都支持所有传感器。您可以从 John Papa 和 Scott Hanselman 等其他博主那里阅读更多关于此主题的信息。我希望您觉得这篇文章很有趣,如果您有推荐的超级本,请在评论中分享(例如,我正在考虑 Lenovo Yoga,但我还没有购买)。也欢迎您就我提出的物理学问题进行辩论。

© . All rights reserved.