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

Ios 如何使用iPhone应用程序向BLE设备发送RGB信号?,ios,bluetooth-lowenergy,cbperipheral,cbcentralmanager,cbperipheralmanager,Ios,Bluetooth Lowenergy,Cbperipheral,Cbcentralmanager,Cbperipheralmanager,我们正在开发iOS应用程序,其中需要将RGB信号传递到BLE设备,根据RGB代码,设备LED将发光。我们正在使用iOS应用程序中蓝牙框架的cbperipal对象的CBCentralManager进行连接 我们正在设置特征和描述符UUID,但仍然无法在BLE设备上发送信号。下面是我们用来以十六进制字节格式传递RGB数据的代码 - (void)centralManager:(CBCentralManager )central didConnectPeripheral:(CBPeripheral )p

我们正在开发iOS应用程序,其中需要将RGB信号传递到BLE设备,根据RGB代码,设备LED将发光。我们正在使用iOS应用程序中蓝牙框架的
cbperipal
对象的
CBCentralManager
进行连接

我们正在设置特征和描述符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对象时是否存在任何问题?

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

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

CBMutableCharacteristic对象表示 本地外围设备的服务(表示本地外围设备 按CBP(外围设备管理器对象)

CBCharacteristic对象尤其表示这些特征 远程外围设备的服务(远程外围设备是 由CBR(外围对象)表示


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

我们尝试了此代码,但没有帮助。您如何设置自己的外围设备?这需要是传递给委托方法的外围设备。另外,您通常会调用
discoverServices
discoverCharacteristicsForService
来获取
CBCharacteristic
,而不是仅仅创建一个
CBMutableCharacteristic
我们已经按照您所说的方式完成了操作,但只是提供了最终的方法代码数据,以便我们可以在这里找到正确的解决方案。这个方法有什么问题吗?是的,您不能简单地创建CBMutableCharacteristic-您必须发现CBCharacteristic或从外围设备的characteristics属性检索它。请参阅文档-CBMutableCharacteristic表示本地特性,而不是远程特性您需要查看查找代码-您必须从外围设备检索特性。