5

我正在 iPhone 上实现 BLE 中央设备,使用开发的自定义 BLE 设备(其固件由同事编写)作为外围设备。

某些操作的外设将返回 BLE 错误代码,符合 BLE 规范中定义的标准蓝牙 ATT 错误代码。

在 iPhone 端,我使用 CoreBluetooth 堆栈来开发中央设备,我在 xCode 的调试器输出窗口中收到以下错误通知:

CoreBluetooth [警告] 未知错误:XX

然后我在回调中收到一个 CBError* 对象。我的问题是我在回调中得到的 CBError* 对象(例如,在 CBPeripheralDelegate 的 didWriteValueForCharacteristic 回调中)只包含 code=0 和localizedDescription="Unknown error"。

是否可以通过 CoreBluetooth 堆栈以某种方式检索在调试器输出窗口中记录的错误代码?

根据我的研究,CoreBluetooth 似乎将几乎所有 BLE 标准错误代码都映射为“未知错误”(内部代码为 0,请参阅CBError 参考);我想获得更详细的错误代码,例如CBAttError编码的错误代码。

4

1 回答 1

4

在应用程序中,您只能使用 CoreBluetooth API。那些只暴露 CBError ,正如您在许多情况下看到的那样,它可以掩盖真正的错误。所以官方访问源错误的答案是你做不到。

但是,如果需要,您可以通过编程方式访问 Apple 系统日志。(见帖子:使用Objective C读取发布到设备控制台的日志消息)您可以定义一个查询来返回您感兴趣的项目,并尝试推断错误的真正原因。这是一种启发式方法,但不幸的是,目前我们没有其他方法可以做到这一点。

于 2013-08-29T21:38:19.270 回答