【问题标题】:iOS. BLE. CBCharacteristicWriteWithoutResponse - How to make it work?IOS。低功耗蓝牙。没有响应的特征写入 - 如何使其工作?
【发布时间】:2014-02-23 14:38:14
【问题描述】:

这是我在这里的第一个问题,不要向我收费太高。 我想获得一些建议,如何使用 CBCharacteristicWriteWithoutResponse 从一台 iOS 设备向另一台设备发送几个字节。

我确实尝试使用 writeValue:forCharacteristic:type: 从一台 iOS 设备发送数据(中心角色) 并使用 peripheralManager:didReceiveWriteRequests: 在另一台 iOS 设备上接收它(Peripheral 角色)。

我对 type:CBCharacteristicWriteWitResponse 没有问题,但如果我用 type:CBCharacteristicWriteWithoutResponse 替换它,就停止接收它。怎么了?我是否遗漏了什么或 CBCentralManagerDelegate 不支持 WriteWithoutResponse?

这里有一些代码:

@interface BleCentralDemo : NSObject <CBCentralManagerDelegate> {}
@end

@implementation BleCentralDemo

-(void) writeValue:(int)sUUID characteristicUUID:(int)cUUID p:(CBPeripheral *)p data:(NSData *)data {
[p writeValue:data forCharacteristic:cUUID type:CBCharacteristicWriteWithResponse]; // sent, received
[p writeValue:data forCharacteristic:cUUID type:CBCharacteristicWriteWithOutResponse]; // sent, not received
}
@end

@interface BlePeripheralDemo : NSObject <CBPeripheralManagerDelegate> {}
@end

@implementation BlePeripheralDemo

-(void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests {
 for (CBATTRequest *request in requests){
 NSLog(@"request.value:%@", request.value); 
 [peripheral respondToRequest:request withResult:CBATTErrorSuccess];
 }
}
@end

【问题讨论】:

    标签: ios


    【解决方案1】:

    我今天遇到了同样的问题。

    您应该使用 CBCharacteristicPropertyWriteWithoutResponse 属性设置您的特征。(代码中的 cUUID)

    我的特点是外围设备。就这样创建了

    [[CBMutableCharacteristic alloc] initWithType:writeableCharacteristicUUID properties:CBCharacteristicPropertyWrite | CBCharacteristicPropertyNotify | CBCharacteristicPropertyWriteWithoutResponse value :nil permissions:CBAttributePermissionsWriteable];
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2012-05-08
      • 2014-05-05
      • 1970-01-01
      相关资源
      最近更新 更多