0

我想连接多个 ble 设备并并行进行读写操作?

4

4 回答 4

3

我们在 Android 上使用 BLE 的经验清楚地表明,Android BLE 堆栈上的多线程操作可能会导致许多问题.. ;)

我建议你一次做一件事,并尽量避免并行工作......

我们的 2 美分...

于 2016-04-29T09:05:07.810 回答
1

为了能够同时连接到多个设备,您必须使用自动连接 gatt 功能,而不是直接连接(http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#connectGatt( android.content.Context,%20boolean,%20android.bluetooth.BluetoothGattCallback))。

如果使用自动连接,手机可以同时发起多个连接。如果使用直接连接,则只能同时发起一个连接。

但是,一旦连接上,您就可以并行执行所有 gatt 操作,尽管每个外围设备一次只能有一个未完成的 gatt 操作。

于 2016-05-14T23:43:18.250 回答
1

有几个库可以让您轻松地做到这一点。

例如,RXAndroidBLE 是一项很棒的工作。但是如果你使用 Kotlin - 有一些更简单的东西: BleGattCoroutines

基本上,它使用 Kotlin 的协程将异步(和丑陋的)Android BLE API 包装到普通同步风格的调用中。

免责声明:我不使用这个库本身,但在我最近的商业嵌入式项目中使用相同的方法。它就像一个魅力。

于 2020-01-10T10:48:52.397 回答
0

这是我发现的用于在 Android 中使用 BLE 堆栈的更好的存储库之一。但它没有提供操作的并行处理。我认为,如果您在 SDK 级别工作,则确实无法进行并行操作,因为您没有任何低级控制。

有一个新的 RXAndroidBLE 库,我没用过,但它可能会有所帮助。这里有一些讨论。他们显然能够同时连接 5 个传感器并处理数据……尽管它仍然是连续的。

于 2016-04-29T09:18:23.743 回答