IOS 蓝牙 BLE 写入值返回“未知错误”

Posted

技术标签:

【中文标题】IOS 蓝牙 BLE 写入值返回“未知错误”【英文标题】:IOS Bluetooth BLE writevalue return "Unknown error" 【发布时间】:2013-05-18 10:05:10 【问题描述】:

我正在 ios 6 上开发我的第一个智能蓝牙 (BLE) 软件。

我能够接收通知并读取与 Nordic Development kit 交换的特性值,包括来自我创建的自定义 GATT 配置文件(具有用于服务和特性的特定 UUID)。

但是,每次我尝试在特征中写入值时,都会收到错误消息Unknown Error,而没有更多信息。没有错误代码,没有来自 XCode 的 CoreBluetooth[WARNING]

我已将我的服务和特性属性权限设置为无需身份验证即可写入。使用开发北欧工具,我可以在我的特征中写入一个值,所以这不会是权限问题。

这是我用来写值的代码

uint16_t val = 2;
NSData * valData = [NSData dataWithBytes:(void*)&val length:sizeof(val)];
[testPeripheral writeValue:valData forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];

以及出现“未知错误”错误的回调

 - (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:
                     (CBCharacteristic *)characteristic error:(NSError *)error
   
    NSLog(@"Did write characteristic value : %@ with ID %@", characteristic.value, characteristic.UUID);
    NSLog(@"With error: %@", [error localizedDescription]);

    //code...

控制台中的错误文本是

Did write characteristic value : <068c0e00 fedc070c 050b3200 04> with ID Unknown (<4444>)
With error: Unknown error.

错误信息中的值不是我要写的??!! 444 是我用于测试的正确 UUID。

值的长度重要吗?

在互联网上查找 hoirs 并尝试了很多测试后,我需要 SO 来弄清楚。 有什么建议吗?

【问题讨论】:

如果仍未解决,错误号是多少? 【参考方案1】:

您应该检查 CBCharacteristic 的属性。如果属性表明 Characteristic 不可写,您可能会收到此错误。

祝你好运。

【讨论】:

【参考方案2】:

问题出在设备数据库管理中,而不是在 IOS 端。但是,如果没有 CoreBluetooth 的错误代码,很难弄清楚!

【讨论】:

我面临同样的问题。设备数据库管理是什么意思。您能否再解释一下,以帮助我们了解根本原因。 我在 uController 中对特性进行了一些错误设置。您可以尝试在 IOS 蓝牙属性上取消配对设备以强制进行新的配对/密钥交换。您还可以通过关闭后台实例(如果存在)并重新启动它来尝试使用应用程序的新实例。祝你好运【参考方案3】:

sdespont 是对的。

我也遇到过同样的问题。只需双击主页按钮并向上滑动以终止应用程序,然后重新启动它,BLE 就可以工作了! 我认为它位于设备数据库管理中,即使在调试期间我们也应该取消连接。

【讨论】:

以上是关于IOS 蓝牙 BLE 写入值返回“未知错误”的主要内容,如果未能解决你的问题,请参考以下文章

低功耗蓝牙Ble的详细使用流程

iOS-BLE <CBCharacteristic:未指定“无响应写入”属性 - 忽略无响应写入

Android BLE低功耗蓝牙开发极简系列(二)之读写操作

低功耗蓝牙通知特性

使用 Ionic Native BLE 向 BLE 外围设备发出写入值

混合APP低功耗蓝牙项目解析数据可能用到的一些小方法---ble