蓝牙低功耗 - 发送数据包非常慢
问题描述:
我们正在构建一个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来获得更高的连接优先级,这应该会提供更好的速度。
设置该标志对整体计时没有影响,或导致传输问题。我并不感到惊讶,因为只有一个蓝牙对话发生(在BLE设备和平板电脑上),提高优先级似乎不太可能有帮助... –
这是令人惊讶的,因为我们每次使用速度都会提高它。尽管我们总是使用write和response,因为当我们没有使用任何响应时,我们遇到了问题。 – Zomb