jca*_*ady 7 iphone bluetooth ios core-bluetooth bluetooth-lowenergy
使用iOS CoreBluetooth时,在发送相对大量的数据时,将其分解为20个字节的块然后将它们一次写入外围对象是很重要的.使用WriteWithResponse特性时,这很容易做到:写20个字节,等待回调,写下20个字节,依此类推.
但是WriteWithoutResponse特性呢?我需要尽可能快地通过BLE发送1-2kB的数据.WriteWithResponse在执行此操作时效率非常低,因为它会响应每个20字节的数据包.我的应用层负责纠错和可靠性,所以我不需要BLE来处理数据.
问题是WriteWithoutResponse没有给你一个回调,因为CoreBluetooth无法知道数据的实际写入时间.所以问题是:我们如何使用WriteWithoutResponse正确地隔离发送大量数据?
我想到的唯一解决方案是执行以下操作:
这种方法有两个明显的问题:
当然,发送大量数据的一个很好的选择是将MTU大小增加到大于20个字节以容纳我们的大量数据.但似乎很少有外围设备支持这一点; 我们没有.
任何人都有任何关于如何解决这个问题的见解?
小智 5
如果您支持 iOS 11: iOS 网站
@property(readonly) BOOL canSendWriteWithoutResponse;
Run Code Online (Sandbox Code Playgroud)
此属性让您知道缓冲区是否已满,并且可以在没有响应的情况下传输更多内容。每次传输后,请密切关注此变量和回调:Peripheral Delegate
peripheralIsReadyToSendWriteWithoutResponse:
Run Code Online (Sandbox Code Playgroud)
这应该足以让您知道何时发送更多数据。
| 归档时间: |
|
| 查看次数: |
2557 次 |
| 最近记录: |