【问题标题】:How to send RGB signal to BLE device using iPhone application?如何使用 iPhone 应用程序向 BLE 设备发送 RGB 信号?
【发布时间】:2015-04-28 19:10:56
【问题描述】:

我们正在开发 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 对象有什么问题吗?

【问题讨论】:

  • 我们尝试了这段代码,但没有帮助。 github.com/RedBearLab/iOS/tree/master/Examples/BLE%20RGB/…
  • 你是如何设置self.peripheral的?这需要是传递给委托方法的外围设备。此外,您通常会调用discoverServicesdiscoverCharacteristicsForService 来获取CBCharacteristic,而不仅仅是创建CBMutableCharacteristic
  • 我们按照你说的方法做了,只是提供了最终的方法代码数据,以便我们可以在这里找到正确的解决方案。我们在这个方法中做错了什么?
  • 是的,您不能简单地创建 CBMutableCharacteristic - 您必须发现 CBCharacteristic 或从外围设备的特性属性中检索它。请参阅文档 - CBMutableCharacteristic 表示 本地 特征,而不是远程特征
  • 您需要查看您的发现代码 - 您必须从外围设备中检索特征。

标签: ios bluetooth-lowenergy cbperipheral cbcentralmanager cbperipheralmanager


【解决方案1】:

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

如果你参考文档,你会看到

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

CBCharacteristic 对象特别表示特征 远程外围设备的服务(远程外围设备是 由 CBPeripheral 对象表示)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多