如何使用iPhone应用程序将RGB信号发送到BLE设备?

时间:2015-02-26 12:01:19

标签: ios bluetooth-lowenergy cbperipheral cbcentralmanager cbperipheralmanager

我们正在开发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对象时是否有任何问题?

1 个答案:

答案 0 :(得分:0)

您不能简单地创建CBMutableCharacteristic - 您必须发现CBC特性或从外围设备的特性属性中检索它。

如果您参考文档,您将看到

  

CBMutableCharacteristic对象代表a的特征   本地外围设备的服务(代表本地外围设备   通过CBPeripheralManager对象)

  

CBC特征对象特别代表了这些特征   远程外围设备服务(远程外围设备)   由CBPeripheral对象代表)

您在评论中说明您无法发现设备的服务和特征 - 在这种情况下,我建议您检查您的发现代码或将其添加到您的问题中。