【问题标题】:How to read information from core bluetooth device如何从核心蓝牙设备读取信息
【发布时间】:2012-07-17 10:55:49
【问题描述】:

我正在开发一个 iOS 核心蓝牙应用程序,我能够使用 iPad3 连接 BLE 设备。我可以到达 didDiscoverServices 街区,但无法从这里继续。

我的问题是;

  1. 如何从蓝牙设备读取特征?
  2. 如何读取蓝牙设备的其他信息?

帮助我或提供任何建议。

感谢 Wilhelmsen 的回复。

我从提到的块中得到了以下信息:

[0] - Service : <CBConcreteService: 0x1769a0> UUID: Generic Attribute Profile
[1] - Service : <CBConcreteService: 0x174470> UUID: Generic Access Profile
[2] - Service : <CBConcreteService: 0x1744e0> UUID: Unknown (<00005301 00000041 4c505749 53450000>)

Characteristic

[0] - Characteristic : <CBConcreteCharacteristic: 0x15d410> UUID: Service Changed

[0] - Characteristic : <CBConcreteCharacteristic: 0x1805b0> UUID: Device Name
[1] - Characteristic : <CBConcreteCharacteristic: 0x1806a0> UUID: Appearence

[0] - Characteristic : <CBConcreteCharacteristic: 0x183810> UUID: Unknown (<00004301 00000041 4c505749 53450000>)
[1] - Characteristic : <CBConcreteCharacteristic: 0x1838a0> UUID: Unknown (<00004302 00000041 4c505749 53450000>)

现在如何从 didUpdateValueForCharacteristic 块中的这个 Characteristic 中获取准确的值?

【问题讨论】:

  • 我编辑了我的答案,但是当旧问题解决后你应该创建一个新问题,我不太明白你在更新后的问题上要问什么

标签: ios ipad core-bluetooth


【解决方案1】:

好好阅读整个框架。如果你已经走到这一步,你应该没有任何问题找到“discoverCharacteristics”和外围委托回调“didDiscoverCharacteristic”。您需要知道要发现的服务和特征的 UUID 并将其应用于这些方法。

然后您可以使用“readValueForCharacteristic”和委托回调“didUpdateValueForCharacteristic”进行阅读。

这是从我的手机发送的,所以当我使用电脑时,我可能会稍微编辑一下。希望对你有帮助

新问题:

[connectedPeripheral readValueForCharacteristic:wantedCharacteristic] 

在外围委托

- (void) peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{

NSLog(@"Characteristic value : %@ with ID %@", characteristic.value, characteristic.UUID);
[delegate characteristicValueRead:characteristic.value];
}

为我工作

【讨论】:

  • 我得到了characteristic.value = 。我怎样才能从中获得准确的价值?
  • 它在您的打印方式中。试试NSLog(@"value = %@", characteristic.value);,因为我认为你会得到一个十六进制格式的字符串作为输出。你也可以试试 %x
  • 感谢 Wilhelmsen 的精彩回复。会尝试并让你知道。 :)
【解决方案2】:

你可以获得一个特征的价值

 NSString *value = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];

NSLog(@"Value %@",value);

【讨论】:

    【解决方案3】:

    只需使用 https://github.com/LGBluetooth/LGBluetooth

        [LGUtils readDataFromCharactUUID:@"f045"
                              seriveUUID:@"5ec0"
                              peripheral:peripheral
                              completion:^(NSData *data, NSError *error) {
                                  NSLog(@"Data : %s Error : %@", (char *)[data bytes], error);
                              }];
    

    【讨论】:

    • 你能帮忙解决一下 LGBluetooth 吗!!!我正在尝试在字符上写入数据。但运气不好,它总是说“写数据时出错:未知错误”
    • 尝试在完成块中设置断点,并打印错误对象
    • 网页不可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多