在iOS中向ble特性写入错误

时间:2017-11-10 15:58:48

标签: ios iphone bluetooth-lowenergy core-bluetooth ios-bluetooth

我试着写下ble特征。但是返回错误是“不允许写入”。

这是为了发现这些特征。 //当您发现指定服务的特征时调用。

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
    if ([service.UUID isEqual:[CBUUID UUIDWithString:DEVICE_SERVICE_UUID]])  {
        for (CBCharacteristic *aChar in service.characteristics)
        {
            if ([aChar.UUID isEqual:dev2appcharacteristicsUUID]) {
                [devicePeripheral setNotifyValue:YES forCharacteristic:aChar];
                NSLog(@"Found R-Motion device with characteristics: %@\n", aChar);
                dev2appCharacteristic = aChar;
            }
            if ([aChar.UUID isEqual:app2devcharacteristicsUUID]) {
                //[devicePeripheral setNotifyValue:NO forCharacteristic:aChar];
                NSLog(@"Found R-Motion device with characteristics: %@\n", aChar);
                app2devCharacteristic = aChar;
            }
        }
    }
}

我能正确发现。并尝试写入app2devCharacteristic。 它有_properties unsigned long long 4_isNotifying bool false

我尝试将Byte数组写为

- (IBAction)RequestResult:(id)sender {
    unsigned char bytes[] = {0x00, 0xCC, 0xFF};//{0xFF, 0xCC, 0x00};//
    NSData *transactData = [NSData dataWithBytes:bytes length:3];
    [devicePeripheral writeValue:transactData forCharacteristic:app2devCharacteristic type:CBCharacteristicWriteWithResponse];

}

我在didWriteValueForCharacteristic返回时遇到错误"Writing is not permitted"

如果我改为没有回应

- (IBAction)RequestResult:(id)sender {
    unsigned char bytes[] = {0x00, 0xCC, 0xFF};//{0xFF, 0xCC, 0x00};//
    NSData *transactData = [NSData dataWithBytes:bytes length:3];
    [devicePeripheral writeValue:transactData forCharacteristic:app2devCharacteristic type:CBCharacteristicWriteWithoutResponse];

} 

没有返回错误。但我的外围设备没有收到任何东西。

1 个答案:

答案 0 :(得分:0)

外围设备为每个特征设置权限。读写权限是分开的。不允许写入只是意味着不管加密级别如何都不允许写入。

如果您使用write而不响应,则不会按照规范传递错误消息。

编辑:hmm假设_properties引用蓝牙核心规范中的特性属性表,第3卷第G部分3.3.1.1 a 4表示应该允许不响应写但不允许写响应。