我正在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。
要写的值的长度是否重要?
在互联网上看到毛毡并尝试了很多测试之后,我需要把它想出来。 有什么建议吗?
答案 0 :(得分:1)
您应该检查CBC特性的属性。如果属性表明特征不可写,您可能会收到此错误。
祝你好运。答案 1 :(得分:0)
问题出在设备数据库管理中,而不是在IOS端。但是,如果没有CoreBluetooth的错误代码,很难搞清楚!
答案 2 :(得分:0)
sdespont是对的。
我遇到了同样的问题。只需双击主页按钮并向上滑动即可终止应用程序,然后重新启动它,然后BLE就可以了! 我认为它位于设备数据库管理中,我们应该在调试期间取消连接。