当前位置: 首页 > article >正文

windows蓝牙驱动开发-蓝牙 LE 邻近感应配置文件

邻近感应检测是蓝牙低功耗 (LE) 的常见用途。 本部分提供了创建可用于开发 UWP 设备应用的邻近感应配置文件的设备实现的指南。

在开发此应用之前,应熟悉蓝牙 LE 函数和蓝牙 LE 邻近感应配置文件规范。

示例服务声明

蓝牙低功耗引入了一个新的物理层,该层与蓝牙基本速率共享相同的频率空间。 低功耗配置文件整理成所谓的泛型属性配置文件(或 GATT)。

GATT 配置文件声明了定义用例或场景的一个或多个服务。 若要开发合规的服务实现,必须对特征进行整理,使其符合在蓝牙特别兴趣组 (SIG) 开发人员网站上定义的已建立架构。

下图演示了特征在典型 GATT 服务内的结构方式。

蓝牙邻近感应配置文件

邻近感应配置文件定义了两个角色,旨在允许设备检测其邻近度。

这两个角色称为:

  • 邻近报告器
  • 邻近监视器

邻近报告器

邻近报告器必须是通用 ATTribute (GATT) 服务器。

邻近报告器支持以下 GATT 服务:

  • 链接中断服务(必需)
  • 即时警报服务(可选)
  • Tx 电源服务(可选)
邻近监视器

邻近监视器是 GATT 客户端。 它应创建和维护与邻近报告器的连接,并监视连接的无线电信号强度信息(或 RSSI),以计算信号的路径损失。 如果邻近报告器上提供了可选的 Tx 电源服务,它还可以通过从 Tx 电源级别减去 RSSI 来规范化 RSSI 值。

Windows 中对 GATT 的支持

当 GATT 设备与 Windows 配对时,该设备将成为系统的一部分。 Windows 提供设备对象来表示设备所报告的设备和主要服务。

Windows.Devices.Bluetooth.GenericAttributeProfile 命名空间描述了应用开发人员可在 Windows 中使用的通用属性配置文件 API。

开发设备应用时的第一步是确定该应用需要哪些蓝牙服务才能完成用户关心的场景。 对于邻近配置文件,设备应用需要使用链接中断服务,并根据需要使用即时警报服务和 Tx 电源服务。

设备应用应使用 Windows.Devices.Enumeration 命名空间中可用的 API 来确定与 Windows 配对的所有设备是否实现链接中断服务。 具体而言,请使用 DeviceInformation.FindAllAsync 方法。

DeviceInformation.FindAllAsync 方法采用 AQS(高级查询语法)设备选择器作为参数,以便仅筛选包含链接中断服务的设备。 设备应用开发人员还可以使用 GattDeviceService 类的 GetDeviceSelectorFromUuid 或 GetDeviceSelectorFromShortId 方法,因此无需手动构造 AQS 筛选器。

链接中断服务是由蓝牙 SIG 定义的蓝牙 GATT 服务,因此可以使用短 ID 而非完全限定的 UUID。

为邻近配置文件服务分配的短 ID 服务 ID 为:

服务名称短 ID
链接中断0x1803
即时警报0x1802
Tx 电源0x1804

蓝牙 SIG 会维护分配号码文档中服务的最新列表。

确定要使用的服务后,调用 GattDeviceService.FromIdAsync 以获取该服务的实例。

获取有效的 GattDeviceService 对象后,使用该对象通过 Windows.Devices.Bluetooth.GenericAttributeProfile API 与设备通信。

这些 API 允许访问特定服务及其对象(例如包含的服务、特征和描述符),以及读取和写入功能。

高效使用电源

Windows 中对蓝牙低功耗的支持非常注重高效地使用电源。 这包括减少本地蓝牙无线电适配器的功耗,以及尽可能降低 CPU 使用率。

因此,若要建立蓝牙 LE 连接,应用需要为 GattCharacteristic.ValueChanged 事件注册处理程序。 或者,应用必须调用 GattCharacteristic.ReadValueAsync、GattCharacteristic.WriteValueAsync 或 GattCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync 中的任何方法,而无需指定 BluetoothCacheMode.Cached 选项。

为了最大程度地减少能耗,Windows 不会通过轮询本地蓝牙无线电控制器来主动监视链接的 RSSI 值。

配置文件实现详细信息

若要实现节能设计,设备实现必须遵守特定要求,以确保它们与 Windows 保持兼容。

以下子主题介绍了可高效使用电源的设备端要求,并描述一种可以监视连接状态的技术。

建立连接

当应用程序具有为 GattCharacteristic.ValueChanged 事件注册的处理程序时,Windows 会自动连接到设备。 但是,邻近感应配置文件中所含服务的基本定义不包含任何指示性或可识别的特征。 设备可以将包含指示性或可识别特征的服务添加到邻近感应配置文件中包含的服务。 这意味着邻近设备必须至少支持一个指示性或可识别的特征值,并且应用程序必须将至少一个处理程序注册到 GattCharacteristic.ValueChanged 事件,以便自动建立连接。

检测连接中断

与蓝牙邻近感应配置文件中的提及一样,Windows 8.1 不会公开蓝牙连接的 RSSI 值。 因此,应用无法使用 RSSI 值来计算连接路径损失。 相反,我们建议设备将其邻近感应绑定到链接中断事件。

监视连接状态

应用可以使用 PnpObjectWatcher 监视 GATT 设备的连接状态,以及监视服务设备对象的 PnP“Connected”属性。


http://www.kler.cn/a/537931.html

相关文章:

  • idea 如何使用deepseek 保姆级教程
  • 四次挥手详解
  • Nginx部署Umi React前端项目标准配置
  • 使用 Axios 进行高效的数据交互
  • 使用 OpenGL ES 渲染一个四边形
  • Breakout靶场小试牛刀
  • 小程序:如何暂时停用小程序?
  • 模板方法模式(Template)
  • 利用UNIAPP实现短视频上下滑动播放功能
  • #光子学小白#光子学与人工智能的跨界融合:从基础研究到产业应用 怎么学啊?
  • 悬链线的方程及其推导过程
  • 代理软件更改IP地址会影响网速吗
  • 5.5信息安全
  • Flutter完整开发实战详解(六、 深入Widget原理)
  • 图解BWT FM-Index算法
  • 如何在Excel内,完成excel到json的转换,excel另存为json,excel-to-json插件
  • mysql自连接 处理层次结构数据
  • 【CAPL实战】LIN调度表操作
  • 6.【BUUCTF】[极客大挑战 2019] Http(HTTP头伪造)
  • 《从安全到定制:软件私有化部署业务实战案例解析》
  • 5.Python字典和元组:字典的增删改查、字典遍历、访问元组、修改元组、集合(set)
  • 编写一个自定义 Exporter
  • SpringSecurity:授权服务器与客户端应用(入门案例)
  • 2.9 配置文件状态管理
  • devmem命令之自定义/dev/mem
  • sip协议如何与isdn协议进行通信