繁体   English   中英

CoreBluetooth [WARNING]未知错误:241

[英]CoreBluetooth[WARNING] Unknown error: 241

我正在使用核心蓝牙。 我正在执行简单的写操作。 在外围方面,将该值纳入:

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests 

当我实现上述方法时,要花太多时间写值。 我在中央收到警告:

 CoreBluetooth[WARNING] Unknown error: 241

这很奇怪,因为当我查看文档时 ,发现错误代码仅在0到17之间。 有没有人可以解决这个问题?

2410xF1在蓝牙属性协议(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM