我们正在开发iOS应用程序,我们需要将RGB信号传递给BLE设备,并且基于RGB代码,设备LED将发光。我们正在使用CBCentralManager
为iOS应用中的蓝牙框架的CBPeripheral
对象建立连接。
我们正在设置特征和描述符UUID,但我们仍然无法在BLE设备上发送信号。以下是我们用于以十六进制字节格式传递RGB数据的代码。
- (void)centralManager:(CBCentralManager )central didConnectPeripheral:(CBPeripheral )peripheral
{
NSLog(@"connect peripheral");
unsigned char bytes[] = { 0x5, 0x1, 0x70, 0x70, 0x70, 0x70, 0x48, 0x49,0x48, 0x49, 0x48, 0x65, 0x48, 0x49, 0x48, 0x48};
NSData *nsData = [[NSData alloc] initWithBytes:bytes length:sizeof(bytes)];
CBMutableCharacteristic *myCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"00002a46-0000-1000-8000-00805f9b34fb"] properties:CBCharacteristicPropertyWriteWithoutResponse value:nil permissions:CBAttributePermissionsReadable];
CBMutableDescriptor *yourDescriptor = [[CBMutableDescriptor alloc]initWithType:userDescriptionUUID value:@"00002902-0000-1000-8000-00805f9b34fb"];
myCharacteristic.descriptors = @[yourDescriptor];
[myCharacteristic setValue:nsData];
[self.peripheral writeValue:nsData forCharacteristic:myCharacteristic type:CBCharacteristicWriteWithoutResponse];
[self.peripheral setNotifyValue:YES forCharacteristic:myCharacteristic];
}
我们是以正确的方式做到的吗?发送数据或创建CBMutableCharacteristic
对象时是否有任何问题?
答案 0 :(得分:0)
您不能简单地创建CBMutableCharacteristic - 您必须发现CBC特性或从外围设备的特性属性中检索它。
如果您参考文档,您将看到
CBMutableCharacteristic对象代表a的特征 本地外围设备的服务(代表本地外围设备 通过CBPeripheralManager对象)
和
CBC特征对象特别代表了这些特征 远程外围设备服务(远程外围设备) 由CBPeripheral对象代表)
您在评论中说明您无法发现设备的服务和特征 - 在这种情况下,我建议您检查您的发现代码或将其添加到您的问题中。