kotlin 如何在不断开连接的情况下为两个通道写入蓝牙gatt服务特性(状态133)?

jtoj6r0c  于 2023-01-26  发布在  Kotlin
关注(0)|答案(1)|浏览(116)

我有蓝牙服务和两个频道要写

bluetoothGattService = gatt?.getService(UUID.fromString(ble_gatt_service_uuid))

mTxCharacteristic1 = bluetoothGattService.getCharacteristic(UUID.fromString(txCharacteristics1))
mTxCharacteristic2 = bluetoothGattService.getCharacteristic(UUID.fromString(txCharacteristics2))

现在我有了onCharacteristicsRead()onCharacteristicsWrite()onCharacteristicsChange()
我连接了那个设备
当我写mTxCharacteristic1特性时,ble工作良好
但是每当我写mTxCharacteristic2特性曲线时,ble得到DISCONNECTED

// function1
mTxCharacteristic1.writeType = BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE
mTxCharacteristic1.value = chunk
gatt.writeCharacteristic(mTxCharacteristic1)

//function 2
mTxCharacteristic2.writeType = BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT
mTxCharacteristic2.value = chunk
gatt.writeCharacteristic(mTxCharacteristic2)

如何解决这一问题?
每当我使用第二特性发送数据时,它就会断开连接,只有当我重新启动我的安卓设备时,我才能再次连接ble。
我试过:
一个二个一个一个
nrf connect app showing (TX(1) and unknown_characteristic(2))
仍然得到与状态133相同的与GATT服务器断开连接的问题。

pod7payv

pod7payv1#

在执行此断开连接时,仅使用简单的writeCharacteristics代替reliableWrite,未解决修复问题
gatt.writeCharacteristic(characteristic1)
gatt.writeCharacteristic(characteristic2)
我有8字节的数据包数据,我发送了空值,这是我在调试时发现的
预期为19字节数组,而我只发送了11个数据包(8个丢失)
由于这个原因,它给我错误,并与状态代码133断开连接

相关问题