[英]CoreBluetooth[WARNING] Unknown error: 241
我正在使用核心蓝牙。 我正在执行简单的写操作。 在外围方面,将该值纳入:
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
当我实现上述方法时,要花太多时间写值。 我在中央收到警告:
CoreBluetooth[WARNING] Unknown error: 241
这很奇怪,因为当我查看文档时 ,发现错误代码仅在0到17之间。 有没有人可以解决这个问题?
241
或0xF1
在蓝牙属性协议(ATT)的“应用程序错误”范围内,请参阅蓝牙4.0规范的卷3,F部分,3.4.1错误处理。 不幸的是,Apple没有记录这些的使用。
我的经验还在于,如果iOS未能及时调用-[peripheralManager respondToRequest:withResult:]
来响应-peripheralManager:didReceiveReadRequest:
委托回调,则iOS会代表应用程序自动以0xF1
响应ATT错误响应。
我仍然没有清除该错误代码。 但是现在解决了这个问题。 我已经创建了具有属性CBCharacteristicPropertyWriteWithoutResponse
特征,因此可以消除上述错误。 还可以将数据顺利写入外围设备。 但是仍然想知道那个错误。
确保您在打电话:
迅速:
func respondToRequest(request: CBATTRequest!, withResult result: CBATTError)
目标C:
- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result
并且成功传递CBATTError.Success并仅调用一次函数。 来自委托回调的EG:
func peripheralManager(peripheral: CBPeripheralManager!, didReceiveWriteRequests requests: AnyObject[]!)
呼叫:
peripheral.respondToRequest(requests[0] as CBATTRequest, withResult: CBATTError.Success)
这为我们解决了这个问题。
我同意迈克尔。 我以前遇到过同样的问题,终于解决了。
如果中央设备将数据写入外围设备,则可以在CBCharacteristicPropertyWriteWithoutResponse模式或CBCharacteristicPropertyWriteWithResponse模式下工作。 第一个不需要外围设备响应,而第二个则需要。 如果中央设备在需要时未收到外围设备的响应,则会发生此错误。 由于中央设备仅等待几秒钟,因此您应该调用该方法
- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result
只要委托方法就响应写操作
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
叫做。
如果写入数据很大,外围设备可能会收到多个CBATTRequest。 请记住,仅响应请求数组的第一个请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.