0

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

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

哪一个应该是外设和中央应该是?
笔记本电脑应该是这个应用程序的核心吗?
我也见过一个用于蓝牙应用的GATT服务器。使用GATT服务器比外设和中央服务器更有意义吗?

回答

1

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

我会使用笔记本电脑作为Central Manager,将听所有外设。

该iDevice将是Peripheral Manager广播本身和它的服务&的特点。

很遗憾,我没有开发Windows和BLE的经验,但是我的框架可以在iOS和OSX上工作,并且在发送或发现对方时都没有问题。

关于您在iOS上使用CBUUID进行广播时所使用的唯一ID。这可以用来唯一标识一个外设,因为它是一个GUID。

对于这一切发生的应用程序需要在后台运行或外设的广播将被终止。

+0

谢谢。唯一的ID将存储在iOS应用程序内。可以在没有用户交互的情况下将其发送到外设?如果我将iOS作为外设,OSX作为中心,您是否对示例代码或教程有任何建议? – Heinrich

+0

如果iDevice使应用程序开放广播具有特征ID的服务,那么中央管理器应该能够发现外围设备,连接到它并读取其值,假设特征不需要任何验证。这意味着如果特征没有被加密,那么用户必须与中央管理器配对才能获得该值。 –

+0

就像我说的。我正在研究一个旨在通过BLE读取和发送数据更简单的框架。一旦我开源了,我会发布一个链接。 –

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); 
       }];