首页 > 解决方案 > 低功耗蓝牙特性写入响应

问题描述

我有一个使用 GATT 服务器设置运行 BT5 的嵌入式设备。在服务器上,我设置了一个具有各种特性的服务,以允许客户端(PC 或移动设备)通过写入特性来调整设备的各种参数。

我希望设备为每次写入从应用程序级别发送回响应。我不清楚推荐的方式是什么。

我想过让客户阅读或订阅一般状态特征,但我想确保我不会错过更简单的方法来做到这一点。我查看了 BT write with response 命令,但似乎对此的确认可能低于应用程序。

标签: bluetooth-lowenergybluetooth-gatt

解决方案


我使用通知特性解决了这个问题。客户端首先订阅该 CCD 上的通知事件,然后发送到主机/设备的每个命令都由主机触发通知来确认。为了更好地同步命令和响应,您可以为每个命令添加一个增量命令 ID,并将命令 ID 作为发送回客户端的通知数据的一部分。

但是我实现了这一点,因为在设备处理完命令我需要一个响应,并将结果发送回客户端。如果您只想知道主机是否已收到命令,则可以使用 Write-With-Response CCD。

我查看了 BT write with response 命令,但似乎对此的确认可能低于应用程序。

实际上,Write-With-Response-Handler 几乎总是在 BLE 堆栈上实现,而不是在应用程序级别上实现。但是我不明白为什么这会是一个问题。当写入响应失败时,您应该以某种形式通过 BLE 堆栈获得错误报告。如果它是一个阻塞调用,它甚至可能返回一个成功值。


推荐阅读