2

我查看了 BLE 规范,发现蓝牙 SIG 已经预定义了许多服务,比如心率。我只是想知道我是否可以自己定义服务?如果可以,有没有可用的例子?谢谢。

4

2 回答 2

8

是的,完全可以自己定义服务。

服务和特征都由 UUID 标识。例如,BLE 服务页面列出了所有标准化服务和分配的 UUID。

如您所见,心率服务使用0x180D的是 16 位短格式,仅供标准化服务使用。定义自己的服务时的唯一要求是使用 128 位长格式 UUID。

使用uuidgen(在 Mac OS X 上可用)自己生成随机(唯一)UUID:

uuidgen
# example result: 94B01578-5603-4D5A-8DFF-9365A1C4AC93

您可以使用它来发布和识别您自己的服务。这可以在您自己的自定义硬件上完成,也可以通过 iOS 上的软件完成(因为您提到了核心蓝牙)。

创建你的CBMutableService

CBUUID *serviceUUID = [CBUUID UUIDWithString:@"94B01578-5603-4D5A-8DFF-9365A1C4AC93"];
CBMutableService *myService = [[CBMutableService alloc] initWithType:serviceUUID primary:YES];
// add some characteristics, also identified by your own custom UUIDs.

最后看到addService: & startAdvertising: onCBPeripheralManager开始发布您的自定义服务。

使用 iOS 设备发布此服务后,您可以使用CBCentralManager类使用其他 iOS 设备或 Mac 扫描并连接到该服务。

于 2013-07-02T13:56:48.793 回答
3

这是一个演示应用程序,其中包含在 iOS 设备上设置您自己的蓝牙 LE 服务的示例:SimpleShare

您需要为您的应用服务生成一个唯一的 UUID。该站点将生成一个供您使用。

于 2014-01-14T08:48:45.790 回答