bluetooth-lowenergy - 低功耗蓝牙特性写入响应
问题描述
我有一个使用 GATT 服务器设置运行 BT5 的嵌入式设备。在服务器上,我设置了一个具有各种特性的服务,以允许客户端(PC 或移动设备)通过写入特性来调整设备的各种参数。
我希望设备为每次写入从应用程序级别发送回响应。我不清楚推荐的方式是什么。
我想过让客户阅读或订阅一般状态特征,但我想确保我不会错过更简单的方法来做到这一点。我查看了 BT write with response 命令,但似乎对此的确认可能低于应用程序。
解决方案
我使用通知特性解决了这个问题。客户端首先订阅该 CCD 上的通知事件,然后发送到主机/设备的每个命令都由主机触发通知来确认。为了更好地同步命令和响应,您可以为每个命令添加一个增量命令 ID,并将命令 ID 作为发送回客户端的通知数据的一部分。
但是我实现了这一点,因为在设备处理完命令后我需要一个响应,并将结果发送回客户端。如果您只想知道主机是否已收到命令,则可以使用 Write-With-Response CCD。
我查看了 BT write with response 命令,但似乎对此的确认可能低于应用程序。
实际上,Write-With-Response-Handler 几乎总是在 BLE 堆栈上实现,而不是在应用程序级别上实现。但是我不明白为什么这会是一个问题。当写入响应失败时,您应该以某种形式通过 BLE 堆栈获得错误报告。如果它是一个阻塞调用,它甚至可能返回一个成功值。
推荐阅读
- list - 在 Dart 中,List.from 和 .of 以及 Map.from 和 .of 有什么区别?
- vba - Powerpoint 2016 中的宏不起作用
- ruby - Ruby 中的切换案例
- node.js - Mongoose 不区分大小写的架构
- ajax - Laravel 和 AJAX 401 未经授权
- c# - Linq 在多个字段上加入和分组并截断日期中的时间
- javascript - 从本地磁盘加载图像
- java - oatomcat.jdbc.pool.ConnectionPool :无法创建池的初始连接。Spring Boot + MySql
- polymer - 无法下载 Chromium 设置“PUPPETEER_SKIP_CHROMIUM_DOWNLOAD”环境变量以跳过下载
- python - 如何在具有通用视图的 URL 中使用 slug?