2

我有一个使用 CoreBluetooth 框架通过蓝牙 LE 与 iDevice 通信的应用程序。对于我的一个特点,我发送了一个用 NSKeyedArchiver 编码的日期(例如在这个问题的接受答案中)。

发生这种情况时,我得到:

CoreBluetooth[WARNING] Unknown Error: 9

而且外设甚至没有收到写请求,也没有抛出任何错误。

在中央,它执行以下操作:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.myDate];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];

其中 myDate 是一个有效的 NSDate。

我知道根据蓝牙核心 4.0 文档第 2 卷 D 部分第 2 节,错误代码 0x09 是超出连接限制。但是,这在这种情况下没有意义(两者之间只有一个联系)。

一个有趣的事实是,如果我只是编码一个字符串并发送它,就没有问题:

NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];

外围设备接收到写请求,可以正确解码,可以毫无问题地接受。

有人知道发生了什么吗?

4

1 回答 1

0

您的键控存档数据和本地测试字符串有多大?听起来您可能超出了该特征的可写大小。

于 2013-10-24T02:35:18.083 回答