在 CoreBluetooth.framework 中实现读/写特性

Posted

技术标签:

【中文标题】在 CoreBluetooth.framework 中实现读/写特性【英文标题】:Implementing read/write characteristic in the CoreBluetooth.framework 【发布时间】:2013-05-21 03:39:36 【问题描述】:

我正在研究 corebluetooth 框架,目前我已经创建了具有可写和可读特性的外围设备。它对我来说工作正常。但我想创建读写外围设备。我尝试了以下操作:

characteristic = [[CBMutableCharacteristic alloc] initWithType:characteristicUUID
                                                                  properties:(CBCharacteristicPropertyRead|CBCharacteristicPropertyWrite)
                                                                       value:nil
                                                                 permissions:(CBAttributePermissionsWriteable|CBAttributePermissionsReadable)];

但它在上述情况下不起作用,该属性也是可读或可写的,不是一次都可以。我认为它是第一个。我错过了什么吗?

【问题讨论】:

试试这样(CBCharacteristicPropertyRead & CBCharacteristicPropertyWrite) @Tony:不,它不工作 Erik:将它们与常量进行“与”运算得到“0”。 【参考方案1】:

您应该检查的几件事:

    确保当您使用方法- (void)writeValue:(NSData *)data forCharacteristic:(CBCharacteristic *)characteristic type:(CBCharacteristicWriteType)type 时,您使用的CBCharacteristicWriteType 应该与CBCharacteristic 属性匹配。

    在您的外设实现中,

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests,

确保你没有这颗宝石:`

[peripheral respondToRequest:request withResult:CBATTErrorWriteNotPermitted];

我从 CoreBluetooth 编程指南中复制了它,它把我搞砸了整整一个小时。

【讨论】:

以上是关于在 CoreBluetooth.framework 中实现读/写特性的主要内容,如果未能解决你的问题,请参考以下文章

iOS蓝牙

核心蓝牙框架

iphone 4s可以连接两个蓝牙4.0设备吗?

从 fs_usage 的输出中提取路径

Swift语言iOS8的蓝牙Bluetooth解析(转帖)

分配的变量引用在哪里,在堆栈中还是在堆中?