蓝牙LE应用架构

时间:2014-05-09 23:05:12

标签: ios bluetooth bluetooth-lowenergy core-bluetooth android-bluetooth

我正在制作我的第一个蓝牙LE应用程序,需要一些如何处理的建议。

我需要有笔记本电脑等设备(Windows,Linux,OSX,无所谓),跟踪设备(iOS和Android)何时进入蓝牙LE系列。这些设备将运行使用BT LE的应用程序。每个移动设备应用程序都将具有笔记本电脑将收集的唯一ID(可能是用户ID)。我需要这样做而无需用户交互。而已。

外围和中心应该是哪一个?
笔记本电脑应该是这个应用程序的核心吗? 我还看到了蓝牙应用中使用的GATT服务器。使用GATT服务器比使用外设和中心更有意义吗?

3 个答案:

答案 0 :(得分:1)

我目前正在为Core Bluetooth构建一个基于开源块的包装器。

我会使用笔记本电脑作为Central Manager来监听所​​有外围设备。

iDevice将是Peripheral Manager广播本身及其服务&特点。

可悲的是,我没有开发Windows和BLE的经验,但我的框架在iOS和OSX上工作,我没有发送或发现彼此的问题。

关于制作外围设备时iOS上的唯一ID,您使用CBUUID进行广播。这可以用于唯一地标识外围设备,因为它是GUID。

为了实现这一切,应用程序需要在后台运行,否则外围设备的广播将被终止。

答案 1 :(得分:0)

我现在已经发布了我的Core Bluetooth Manager的第一部分。 V1.0目前只有Central管理器部分,但Peripheral Manager部分正在开发中。

您可以在https://github.com/steprescott/SCPCoreBluetoothManager

下载

答案 2 :(得分:0)

请注意,您只需去结帐https://github.com/SocialObjects-Software/LGBluetooth

即可

以下是使用LGBluetooth的绝佳示例(注意:偶数连接由框架处理)

阅读操作

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

写入操作

        int8_t dataToWrite = 0xFF;
        [LGUtils writeData:[NSData dataWithBytes:&dataToWrite length:sizeof(dataToWrite)]
               charactUUID:@"cef9"
               serviceUUID:@"5ec0"
                peripheral:peripheral completion:^(NSError *error) {
                    NSLog(@"Error : %@", error);
                }];