这是我的第一个问题,不要对我要求太高。 我想获得一些建议,如何使用 CBCharacteristicWriteWithoutResponse 将几个字节从一个 iOS 设备发送到另一个 iOS 设备。
我确实尝试使用 writeValue:forCharacteristic:type: 从一台 iOS 设备发送数据(核心角色) 并在另一台iOS设备上使用peripheralManager:didReceiveWriteRequests:接收它(外设角色)。
我对 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
最佳答案
我今天也遇到了同样的问题。
您应该使用 CBCharacteristicPropertyWriteWithoutResponse 属性设置您的特征。(代码中的 cUUID)
我的特征来自于外围设备。像这样创建的
[[CBMutableCharacteristic alloc] initWithType:writeableCharacteristicUUID properties:CBCharacteristicPropertyWrite | CBCharacteristicPropertyNotify | CBCharacteristicPropertyWriteWithoutResponse value :nil permissions:CBAttributePermissionsWriteable];
希望对你有帮助
关于iOS。 BLE。 CBCharacteristicWriteWithoutResponse - 如何使其工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470958/