Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bluetooth Android可写回调OnWriteCallback在几秒钟后停止_Bluetooth_Bluetooth Lowenergy_Android Ble_Rxandroidble_Bluetooth Lowenergy 4.2 - Fatal编程技术网

Bluetooth Android可写回调OnWriteCallback在几秒钟后停止

Bluetooth Android可写回调OnWriteCallback在几秒钟后停止,bluetooth,bluetooth-lowenergy,android-ble,rxandroidble,bluetooth-lowenergy-4.2,Bluetooth,Bluetooth Lowenergy,Android Ble,Rxandroidble,Bluetooth Lowenergy 4.2,我正在尝试基于OnCharacteristicWrite回调条件同步写入下一个数据包,以实现最大吞吐量。但由于某些原因,在1-2秒的时间段后,它会在非常初始的时候停止触发OnCharacteristicWrite回调,并且即使我重新发送数据包,它也不会被调用。如果我增加每个数据包的延迟,效果会很好,但我不想增加任何延迟来实现最大吞吐量 有没有什么方法可以在不增加任何延迟的情况下实现最大吞吐量 另外,每个连接间隔发送多个数据包到底意味着什么?我有没有办法通过外围设备实现这一点?如果使用“无响应写入

我正在尝试基于OnCharacteristicWrite回调条件同步写入下一个数据包,以实现最大吞吐量。但由于某些原因,在1-2秒的时间段后,它会在非常初始的时候停止触发OnCharacteristicWrite回调,并且即使我重新发送数据包,它也不会被调用。如果我增加每个数据包的延迟,效果会很好,但我不想增加任何延迟来实现最大吞吐量

有没有什么方法可以在不增加任何延迟的情况下实现最大吞吐量


另外,每个连接间隔发送多个数据包到底意味着什么?我有没有办法通过外围设备实现这一点?

如果使用“无响应写入”,请参阅,您将能够每个连接间隔发送多个数据包

不幸的是,Android KitKat在您发送多个包含Write而没有响应的数据包时破坏了流控制。如果你在新的安卓设备上试用,它应该可以正常工作

如果writeCharacteristic方法返回true,则表示它已将数据包传递给蓝牙进程。您可以在上看到源代码中的确切逻辑。基本上,如果特征具有write属性,则返回true,gatt对象有效,并且当前没有其他挂起的gatt操作正在进行

onCharacteristicWrite回调将在写入响应已到达并写入响应时发送状态=0,或者蓝牙堆栈已准备就绪,并且有缓冲区空间接受新数据包进行写入而无响应时发送状态=0

我最近写了一篇文章,你可以在这里读到:


如果您想要一个简单的KitKat解决方案,您可以将10个数据包作为write With Response写入,然后将第11个数据包作为write With Response写入,然后使用write With Response重新开始。这应该会给你带来不错的性能。

你有什么Android设备/操作系统版本?Android 4.4.2kitkat@Emil我的BLE版本也是4.2。但我不知道如何在每个conn间隔发送多个数据包。我根据每个数据包收到onCharacteristicWrite回调的时间逐个发送数据包。但在大约300个onCharacteristicWrite回调状态为0的数据包成功后的一段时间内,回调会突然停止,甚至在数据包重新发送时也不会触发。因此,我在betwn two数据包中添加了8毫秒的延迟,它成功地写入了回调状态为0的所有数据包,但这实际上降低了吞吐量。有没有更好的方法来实现这一点?@emilandroid 4.4.2kitkat@Emil当我发送任何数据包时,我的Gatt WriteCharacteristic函数返回布尔值true。此返回值true与OnWriteCharacteristic回调状态-0成功发送每个数据包之间有什么区别?感谢您提供详细信息。我能够在短时间内无响应地写入数据包,但为了检查数据完整性,我将返回我的BLE的Tx和Rx引脚,并检查在OnCharacteristicChange calback和读取相同特征后我接收的数据是否相同。我将根据此数据比较发送下一个数据包。但是,基于具有相同特征的OnCharacteristicChanges读取数据包的过程似乎非常缓慢。我还可以使用两种不同的特性,一种用于写入/发送,另一种用于读取和如何读取?谢谢