我正在使用蓝牙LE设备连接Android应用程序,我能够建立连接。 但在建立连接后,我无法从设备获得更新回调。 我不确定我做错了什么,所以以下是制造商的文档的一部分,我无法理解: -
“血氧计在其控制点支持显示同步命令。显示同步命令是一个写入控制点的2个八位字节信息。此功能可用于同步血氧仪的显示与显示主机设备,帮助操作员确认正确接收脉搏血氧仪读数。“
其中第一个八位字节的值为0x61,第二个八位字节的值应为 5秒和25秒
为了得到这个,我做了以下事情: -
在LeScanCallback中,我将BluetoothDevice连接到BluetoothGattCallback
在onServicesDiscovered中,我编写了以下代码行,我对此非常怀疑 实现它的正确方法可能就是我没有从中获取数据的原因 蓝牙设备: -
BluetoothGattCharacteristic oximeterCharacteristic =
noninService.getCharacteristic(UUID.fromString(Oximeter_characteristic_uuid));
BluetoothGattCharacteristic noninControlPointCharacteristic =
noninService.getCharacteristic(UUID.fromString(Nonin_control_point_characteristic_uuid));
oximeterCharacteristic.setValue(0x61, oximeterCharacteristic.FORMAT_SINT16, 1);
oximeterCharacteristic.setValue(15, oximeterCharacteristic.FORMAT_SINT16, 2);
noninControlPointCharacteristic.setValue(0x61, noninControlPointCharacteristic.FORMAT_SINT16, 1);
noninControlPointCharacteristic.setValue(15, noninControlPointCharacteristic.FORMAT_SINT16, 2);
gatt.writeCharacteristic(noninControlPointCharacteristic);
gatt.writeCharacteristic(oximeterCharacteristic);
gatt.setCharacteristicNotification(oximeterCharacteristic, true);
gatt.setCharacteristicNotification(noninControlPointCharacteristic, true);
答案 0 :(得分:0)
我不确定多组值是如何工作的,但还有一些我可以指出你需要改变的事情。 您希望在执行写入之前设置通知警报。它也不足以调用setCharacteristicNotification,你还需要记下通知描述符(你可以在Android蓝牙示例中看到这个例子)并等待回调说明描述符被写入设备。一旦你收到回叫说描述符写入成功,你就可以进行写操作。 一旦你对代码进行了这些更改,我建议重新启动设备和手机,因为Android蓝牙堆栈往往会进入不稳定模式,除非你重新启动手机,否则无法恢复。