Windows 7操作系统提供了对传感器设备的内置支持。这包括对位置传感器的支持,如GPS设备。作为这种支持的一部分,Windows传感器和位置平台提供了一种设备制造的标准方法,以使软件开发商和客户能够正确感知传感器设备。同时,该平台为开发人员提供一个标准化的API和设备驱动程序接口(DDI)与传感器和传感器的数据协同工作。

传感器用于获取多种配置,从这个角度来看,几乎所有的东西,只要能提供有关的物理现象的数据都可以被称为一个传感器。虽然我们通常把硬件设备才认为是传感器。逻辑式传感器也可以通过在提供软件或固件传感器的功能,提供仿真的信息。此外,单一的硬件设备可以包含多个传感器。

在Windows平台中,传感器和地点组织成类。而代表传感器设备的两大类是传感器和类型。例如,在视频游戏控制器,检测的位置和球员的手部动作(也许是视频保龄球游戏),传感器将被归类为导向传感器,但它的类型为三维加速度计。在代码,Windows是通过使用全局唯一标识符(GUID)来识别不同的传感器,其中有许多预定义的类别和类型。当它需要新的类别和类型,设备制造商可以通过确定和发布新的GUID。

定位设备组成一个特别有趣的类别。现在,大多数人都对全球定位系统(GPS)熟悉。在Windows中,全球定位系统传感器作为位置类别的一部分,位置类还包括其他的传感器类型。这些传感器有些是基于软件的,例如IP解析器,提供以位置信息为基础的互联网地址,移动电话塔triangulator,决定在附近的塔,或者一个Wi - Fi提供的网络位置读取位置信息的定位无线网络连接的枢纽。

在Windows传感器和定位平台由以下开发者和用户组成部分:

  • 直通内线使Windows以提供一个传感器设备的标准方法连接到电脑,并提供数据,其他子系统。
  • 在Windows API提供了传感器的方法,属性设置和活动,与相连的传感器和传感器数据。
  • 在Windows API的位置,它是基于Windows API的内置传感器,提供了一套包括编程对象脚本对象,与位置信息工作。
  • 地点和其他传感器控制面板,使计算机管理员设置传感器,位置传感器,包括为每个用户。

下图显示组件之间的关系。

设备驱动程序接口

传感器制造商可以建立连接的设备驱动程序与Windows 7传感器。传感器设备驱动程序是通过使用Windows便携设备(WPD)驱动程序模型,它是基于Windows用户模式驱动程序框架(UMDF)。许多设备驱动程序基于已通过使用这些框架编写的。由于这些技术的建立,经验丰富的设备驱动程序编写的程序员将发现的传感器驱动程序是一个熟悉的任务。该传感器DDI的使用特定的UMDF和小波包分解的数据类型和接口,还定义传感器特有的小波包分解的命令和参数,在那里是必需的。

传感器API

该传感器的API使C + +开发人员能够创建基于传感器的程序,必须使用一组COM接口。该API定义接口来执行共同的传感器编程任务,包括管理按类别,类型或身份证管理传感器的事件,传感器,与个别传感器和传感器收集工作,并与传感器的数据。

传感器API主要包含在两个头文件”Sersorsapi.h”和”Sensors.h”中,主要包括3个主要接口:

l   ISensorManager:包括Sersor类型列举,依附的事件和请求许可。

l   ISensor:代表传感器本身,可以获取属性,事件,报告等

l   ISensorDataReport:获取传感器的报告数据。

下图列出了这三个接口的主要方法:

下面的代码演示如何将系统支持的所有传感器类型列举出来:

#include <sensorsapi.h>
#include <sensors.h>
HRESULT hr;
CComPtr<ISensorManager> pSensorManager;
pSensorManager.CoCreateInstance(CLSID_SensorManager);
CComPtr<ISensorCollection> pALSCollection;
CComPtr<ISensor> pALSSensor;
// 获取系统中所有的ATL传感器
pSensorManager->GetSensorsByType(SENSOR_TYPE_AMBIENT_LIGHT, &pALSCollection);
hr = pSensorManager->RequestPermissions(
                    0,                // 所有者窗口 
pALSCollection,   // 传感器集合访问许可
                    TRUE);            // 模块标识
if(SUCCEEDED(hr))
{
pALSCollection->GetAt(0, &pALSSensor);
}

下面的代码演示如何获取传感器的数据,这里的例子是获取灯的亮度信息:

STDMETHODIMP CALSEventSink::OnDataUpdated(
ISensor* pSensor, ISensorDataReport* pNewData)
{
PROPVARIANT lightLevel;     
PropVariantInit(&lightLevel);      
// 从ISensorDataReport对象获取传感器的数据
pNewData->GetSensorValue(SENSOR_DATA_TYPE_LIGHT_LEVEL_LUX, &lightLevel);
// 获取数值信息
float luxValue = V_FLOAT(lightLevel);
// 对数据进行归一化处理
double lightNormalized = ::pow(luxValue, 0.4) / 100.0;
UpdateUI(lightNormalized);      
PropVariantClear(&lightLevel);
return S_OK;
}

 

定位API

对API的内置传感器,位置API提供了一个简单的方法来检索有关地理位置的数据,同时保护用户的隐私。 API提供的地点,通过一组COM接口,它的功能代表对象。这些对象可以使用程序员谁知道如何使用的COM通过C + +编程语言,或如JScript脚本语言。脚本支持,这使得容易获得项目的位置数据,运行在本地计算机区域中,如小工具。在Windows SDK中包含头文件(包括脚本参考文档,文档),样品和工具,帮助如何使用他们的程序中的位置信息指南网站和软件开发商。

位置和其他传感器的控制面板

视窗7包含一个控制面板,可以让计算机管理员启用或禁用传感器系统范围或为每个用户。由于一些传感器可以暴露敏感数据,该用户界面使管理员控制所有程序是否能够获得每个用户每个传感器。用户还可以查看传感器的性能,改变传感器的描述是在用户界面中显示。

控制面板还提供了一个网页的默认位置,使用户能够提供它们的位置。当没有可用传感器,该平台将使用用户提供的位置。用户可以提供公民处理领域,其中包括街道地址,城市,州或省,以及国家或地区。

本文来自作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!

转载于:https://www.cnblogs.com/yincheng01/archive/2010/04/01/2213271.html

基于Visual C++2010与windows7 SDK开发传感器应用(触觉传感器,温度传感器等等)相关推荐

  1. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-手写数学公式输入...

    搭建好Visual C++2010与windows SDK fo windows7的开发平台以后, 小试牛刀,检验下开发windows7的下的tabletpc应用,这个东西财务记账比较多, 大家先看效 ...

  2. 基于Visual C++2010与windows SDK fo windows7开发Windows 7的多点触摸特性应用程序(1)

    2008年5月28日,微软即将退休的精神领袖比尔·盖茨和首席执行官史蒂夫·鲍尔默共同在北圣地亚哥四季艾维亚拉洲际度假村举办的2008 D6 All Things数字化大会上向到场的嘉宾展示了windo ...

  3. Visual Studio 2010的WAP网站开发

              关于Visual Studio 2010的WAP网站开发,我归纳一下吧,来自官方网站的消息,Visual Studio 2010不支持对WAP网站的直接开发,可以使用早期版本的 V ...

  4. 基于Visual C 2010开发Windows7应用 多点触摸图片处理应用程序 1 同时处理多张图片

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! wind ...

  5. 基于Visual C#2010开发Windows7应用 多点触摸图片处理应用程序(1)-同时处理多张图片...

    windows7的触摸功能开辟了一个电脑的全新世纪.从此,您可以丢掉鼠标和键盘,直接用手在屏幕上玩游戏.用笔来写字编辑文档,聊天. windows7最重要特性之一就是:支持多点触摸.比尔盖茨说,不久, ...

  6. 基于Visual C++ 2010开发Windows7应用 开发多点触控MFC应用程序

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 当下计算 ...

  7. 基于Visual C++2010 与office2010开发办公自动化(2)-自动生成excel与word并打开

    VS2010是新一代全新开发工具 属于全新的系统构架 VS2010旗舰版功能全景 Office 2010,是微软推出新一代办公软件,开发代号为Office 14,实际是第12个发行版.该软件共有6个版 ...

  8. 基于Visual C++2010 与office2010开发办公自动化 2 -自动生成excel与word并打开

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! VS20 ...

  9. 基于Visual C++2010 与office2010开发办公自动化(14)-自定义excel2010工具栏

    VS2010是新一代全新开发工具 属于全新的系统构架 VS2010旗舰版功能全景 Office 2010,是微软推出新一代办公软件,开发代号为Office 14,实际是第12个发行版.该软件共有6个版 ...

  10. 基于Visual C++2010 与office2010开发办公自动化(23)- 使用剪贴板导出Excel文件

    VS2010新特性: Office Word 2010 Office Word 2010 增强了 Navigation Pane 特性,用户可在 Navigation Pane 中快速切换至任何一章节 ...

最新文章

  1. SQL工具-技术支持工具
  2. 计算机上检查视力表,视力检测(30cm视力表自测)
  3. java网络编程(六)
  4. Python的小宇宙,怎么样才能发挥出来?
  5. Dynamics CRM2013/2015 禁止欢迎屏幕(Disable the Welcome Screen)
  6. 以 Google 为例,什么才是好的管理制度?
  7. 2020年勒索病毒事件盘点及未来发展趋势
  8. 小说站源码(带自动采集开源小说网站源码)
  9. 自动化的人肉搜索引擎即将出现?
  10. 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第三批)
  11. android注册页面开发
  12. 406个银英稀有精英名称
  13. matlab采样率为100hz,matlab自己设计一个低通滤波器,要求滤出100Hz之外的频率,采样率为10000Hz...
  14. 高德地图覆盖自定义瓦片图
  15. 51nod 1556 计算(默慈金数)
  16. GitLab系列3 Unicorn
  17. Linux下Web服务器开发
  18. 古龙群侠传 服务器维护,【图片】【原创】古龙群侠传最全流程攻略~~【环家的那只熊吧】_百度贴吧...
  19. 安卓新闻客户端(二) JSOUP解析HTML 抓取网页内容
  20. eclipse页面卡死,eclipse页面一直未响应,eclipse右击web项目就卡死的解决办法

热门文章

  1. 输入法候选词排列的两种新方式
  2. mysql查询bween_MySQL常用查询语句(23个)
  3. php mysql join查询结果_PHP mySQL表JOIN查询 - 最有效的方法?
  4. pythoncss50使用教程_Python学习(二十) —— 前端之CSS
  5. github项目地址在哪里看_拍张照片求解数独,计算机如何从图中看懂题目,这个GitHub热榜项目告诉你...
  6. NGN学习笔记8——NGN的安全问题
  7. Github Page搜索工具更新 - 收藏,手气不错
  8. mybatis 注解的方式批量插入,更新数据
  9. 《C#高效编程》读书笔记04-使用Conditional特性而不是#if条件编译
  10. mock.js那点事(上)