如何从LE蓝牙芯片获取UUID?

时间:2012-12-07 12:42:15

标签: ios bluetooth

我有一个芯片,正在使用LE蓝牙并传输它的UUID。 我需要从IOS应用程序中发现它并获取它的UUID。 我知道如何在两个IOS设备之间建立连接,但不知道如何在另一个IOS设备之间建立连接。

谢谢!

1 个答案:

答案 0 :(得分:1)

你应该查看Apple的CoreBluetooth Temperature Example

首先,您将使用CBCentralManager查找具有您正在寻找的UUID的可用蓝牙外围设备。这是一个漫长的过程,需要代表,我不能轻易地给你代码片段来做到这一点。它看起来像这样。

.h file will have these. Remember to add the CoreBluetooth Framework.
#import <CoreBluetooth/CoreBluetooth.h>
CBCentralManager * manager;
CBPeripheral * connected_peripheral;

(相应地更改您的UUID):

NSArray * services=[NSArray arrayWithObjects:
                    [CBUUID UUIDWithString:@"0bd51666-e7cb-469b-8e4d-2742f1ba77cc"],
                    nil
                    ];
[manager scanForPeripheralsWithServices:services options: [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBCentralManagerScanOptionAllowDuplicatesKey]];
[manager connectPeripheral:peripheral options:nil];

从那里你知道你有合适的外围设备,但你仍然需要选择它并停止CBManager继续扫描新设备。

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
    [manager stopScan];

    NSArray *keys = [NSArray arrayWithObjects:
                 [CBUUID UUIDWithString:@"0bd51666-e7cb-469b-8e4d-2742f1ba77cc"],
                 nil];
    NSArray *objects = [NSArray arrayWithObjects:
                    @"My UUID to find",
                    nil];

    serviceNames = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

    [connected_peripheral setDelegate:self];
    [connected_peripheral discoverServices:[serviceNames allKeys]];

}

现在您已经告诉您的外围设备宣传它拥有哪些服务,您将拥有一个解析这些服务的代理人。

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{
    CBService *bluetoothService;
    for (bluetoothService in connected_peripheral.services) {
        if([bluetoothService.UUID isEqual:[CBUUID UUIDWithString:@"0bd51666-e7cb-469b-8e4d-2742f1ba77cc"]])
        {
            NSLog(@"This is my bluetooth Service to Connect to");
        }
}

我希望这个过程更容易解​​释。解决问题的最佳方法是下载Apple的温度示例并在iPhone或iPad上运行它(它在模拟器中无法运行)。即使您可能没有广播温度,它也会找到您的蓝牙LE设备,并将解析其正在广播的服务。在该项目的LeDiscovery.m文件中放置断点应该向您显示从iOS应用程序发现蓝牙LE芯片所需的步骤。

希望这有帮助!