我正在开发一个Android应用程序,我正在使用android BLE api连接到传感器设备。事情进展顺利但是我用我的Android应用程序连接4个BLE h / w设备但是当我尝试写一些数据时所有4个BLe设备同时只在一台设备上写入数据,我不能同时在所有设备上写入数据。
以下是我在单个BLE设备上写入数据的代码:
if(btWriteGattChar == null)
return;
btWriteGattChar.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
btWriteGattChar.setValue(dat);
mBluetoothGatt[tabIndex].writeCharacteristic(btWriteGattChar);
以上代码适用于单个BLE设备,但不允许我在所有其他设备上写入相同的数据。
请告诉我在多个BLE设备上写入相同数据的错误步骤。
答案 0 :(得分:0)
不,你不能这样做。文档中没有说明,但所有BLE操作实际上都是同步的。
api本身是异步的,但是BLE堆栈只能逐个执行。 例如,在调用writeCharacteristic之后,在将其写入另一个设备/特性之前必须等待onCharacteristicWrite,否则您将得到未定义的行为。如果您不等待回调,则可能会或可能不会写出后续特征。
至少4.4.4这是真的。不过,我没有检查这是否在5.0以后修复。无论如何,如果你的应用程序支持5.0之前的操作系统版本,你必须考虑到这一点。