蓝牙低功耗 - 发送数据包非常慢

问题描述:

我们正在构建一个BLE设备以及与之通话的移动应用程序。这个移动应用程序是用Xamarin/C#编写的,Android的东西在Android专用的PCL(可移植类库)中编写。蓝牙低功耗 - 发送数据包非常慢

我已经将我的数据分成了小块,因此它适合默认的20字节BLE数据包大小,我有一个96字节长的数据块,因此我将它发送为6个16字节的数据包。我已经设置好了,所以前5个数据块的WriteType设置为GattWriteType.NoResponse,只有最后一个数据块的WriteType设置为GattWriteType.Default。

对于前5个数据块中的每一个,我调用SetValue()和WriteCharacteristic(),然后在写入下一个数据块之前等待OnCharacteristicWrite()通知。这样做,我可以在大约20毫秒内写入前5个数据块。但是,第六块(Write_With_Response)在WriteCharacteristic()和相应的OnCharacteristicWrite()通知之间需要大约300毫秒。

这是预期的延迟吗?它似乎非常长!

有没有需要调整的设置,让BLE写入更快地发生?

如果您的目标是API 21及以上,我会尝试在BluetoothGatt上使用requestConnectionPriority来获得更高的连接优先级,这应该会提供更好的速度。

+0

设置该标志对整体计时没有影响,或导致传输问题。我并不感到惊讶,因为只有一个蓝牙对话发生(在BLE设备和平板电脑上),提高优先级似乎不太可能有帮助... –

+0

这是令人惊讶的,因为我们每次使用速度都会提高它。尽管我们总是使用write和response,因为当我们没有使用任何响应时,我们遇到了问题。 – Zomb