cod*_*101 1 bluetooth-lowenergy android-bluetooth
开发一个 Android 应用程序,通过 BLE 将数据发送到外围设备。关于 Android BluetoothGATTCallback onCharacteristicWrite 函数的问题 - 它如何知道写入事务已成功?只要不发生错误就可以认为成功吗?或者它是否记录从写入数据的外围设备特征发送的某种成功响应?
我想说 matdev 在他的回答中的评论是不正确的,至少根据我的经验。
假设您使用“Write With Response”( WRITE_TYPE_DEFAULT) 而不是“Write Without Response”( WRITE_TYPE_NO_RESPONSE),则以下情况适用:
首先你打电话writeCharacteristic。此方法执行一些健全性检查,例如您尝试写入的特征具有“write”属性,该对象上没有其他挂起的 GATT 操作BluetoothGatt,并且该对象未关闭。如果通过了这些健全性检查,此方法将返回true。
然后,写入请求通过无线方式传输到远程设备的 GATT 服务器。这里请求被处理,GATT 服务器返回一个写入响应或一个带有错误代码的错误响应,该响应被发送回 Android 设备。当 Android 收到写入响应时,它将onCharacteristicWrite以GATT_SUCCESS(0) 作为状态进行调用。如果 Android 收到错误响应,它将调用onCharacteristicWrite并将状态设置为错误响应中包含的代码。例如,如果 GATT 服务器返回 0x80(应用程序错误)或 0x13(不允许的值),则这是您将在回调中收到的状态代码。
如果在收到响应之前连接断开,Android 将使用一些当前未记录的非成功状态代码调用回调。
如果您改为使用“无响应写入”( WRITE_TYPE_NO_RESPONSE),则行为会发生onCharacteristicWrite变化。现在,此回调用于流量控制。当本地蓝牙堆栈的缓冲区准备好接受另一个数据包时,您将收到回调。即使在通过无线方式发送数据包之前,这种情况也可能发生。
| 归档时间: |
|
| 查看次数: |
845 次 |
| 最近记录: |