使用 CoreBluetooth (BLE) 将数据从 CentralManager 发送到 PeripheralManager

2023-12-24

我的应用程序在两台 iOS 设备(均为 6.1.4)上运行,其中一台设备充当中央设备,另一台充当外围设备。

我已经成功地将通知(设置为通知的特征)从外围设备发送到中央设备。

但是,我想将一个从 Central 到 Peripheral 的值写入特定的可写特征,但总是失败。

The peripheral:didWriteValueForCharacteristic:error:立即调用委托的方法,错误描述如下:

“一个或多个参数无效”

我一直在网上寻找任何线索,但尚未找出问题所在。

这就是我在外围设备端设置特性的方式:

[[CBMutableCharacteristic alloc] initWithType:<My CBUUID> properties:CBCharacteristicPropertyWrite value:nil permissions:0];

我发现,当我发现中央一侧的特征时,我的可写特征就在那里。我确实在那时存储了一个参考,以便稍后在编写我的值时尝试使用。我正在写入的值只是一个文本字符串,我将其转换为 NSData,如下所示:

NSString *payloadMessage = @"Hello";
NSData *payload = [payloadMessage dataUsingEncoding:NSUTF8StringEncoding];
[peripheral writeValue:payload forCharacteristic:<myCharacteristic> type:CBCharacteristicWriteWithResponse];

我看到的唯一奇怪的事情是我的特征属性设置为 138。看起来它既可写又具有扩展属性。不知道为什么 CoreBluetooth 框架会自动添加它。不知道这是否重要。

我试图发送的特征或数据似乎有问题,但我一生都无法弄清楚。如果有人有任何建议或想法,我将不胜感激


我确实在蓝牙开发列表中收到了解决我的问题的答案。

我没有使用正确的权限创建我的特征。

这就是我最初拥有的:

[[CBMutableCharacteristic alloc] initWithType:<CBUUID> properties:CBCharacteristicPropertyWrite value:nil permissions:0];

这应该是这样的:

[[CBMutableCharacteristic alloc] initWithType:<CBUUID> properties:CBCharacteristicPropertyWrite value:nil permissions: **CBAttributePermissionsWriteable**];  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 CoreBluetooth (BLE) 将数据从 CentralManager 发送到 PeripheralManager 的相关文章

随机推荐