2012-07-18 100 views
11

我正在研究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块得到确切的价值?

+0

我编辑我的答案,但你应该创建一个新的问题时,旧的解决了,我不明白你好多都想问的问题,更新 – chwi 2012-07-23 09:26:18

回答

11

通过框架读取一个不错的阅读。如果你已经走到这么远,你应该没有任何问题找到'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]; 
} 

作品对我来说

+0

感谢您的回复内容。 :) – 2012-07-23 05:49:04

+0

我已编辑的帖子,请让我知道这一点吧.... – 2012-07-23 05:55:54

+0

我越来越characteristic.value = <6fb51600 30cd660e 8c170800>。我如何从中获得确切的价值? – 2012-07-23 06:19:46

2

你可以得到的特征

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

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

值就使用 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); 
          }]; 
+0

你能帮助LGBluetooth !!!我正试图在charact上写数据。但没有运气它总是说“写错误数据:未知错误” – Atrash 2014-10-26 06:56:26

+0

尝试在完成块中设置断点,并打印错误对象 – l0gg3r 2014-10-26 10:51:47

+0

谢谢,我以错误的方式发送数据:) – Atrash 2014-10-26 14:13:33