7

我正在开发一个 iOS 蓝牙 LE 应用程序。我能够正确且成功地遵循的功能如下:

  1. 发现外围设备。
  2. 连接外围设备。
  3. 获取服务和特征。
  4. 能够在单击读取按钮时从特征中读取数据。
  5. 能够写入数据。

这里我遇到了一个问题,只有当 BLE 设备将传入的数据传输到应用程序时,我才需要读取它。我正在明确阅读按钮点击的特征。我的 BLE 设备在特定的时间间隔内连续传输一些数据,但我无法得到它。

我在特性上也设置了 setNotify,但也没有成功。

[peripheral setNotifyValue:YES forCharacteristic:characteristic];

BLE 设备事件如何通知我的应用程序(由它发送到应用程序)?请在这里帮助我或给我一些建议。

提前致谢。

4

2 回答 2

10

你正在做的应该工作。从 Peripheral 到达的所有数据都将到达didUpdateValueForCharacteristic回调方法。在那里寻找它。

因此,无论您是显式调用该readCharacteristic方法还是只是设置外围设备以在有数据可用时通知您(例如警报或心跳),您仍然会在同一个地方收到数据。

注意:当您发送setNotifyValue消息时,您应该会收到有关该didUpdateNotificationStateForCharacteristic方法的回调且没有错误。如果没有,我建议您查看您的外设固件并确保该特性不是只读/可写的。

于 2012-10-25T15:01:06.413 回答
1

在外围设备端,需要设置特性的属性以启用通知。您可以使用 CBCharacteristicPropertyNotify 属性执行此操作。例如,以下是创建特征的方式:

CBMutableCharacteristic *alertLevelCharacteristic = 
[[CBMutableCharacteristic alloc] initWithType:alertLevelCharacteristicUUID
                                   properties:CBCharacteristicPropertyRead | CBCharacteristicPropertyNotify
                                        value: nil permissions:CBAttributePermissionsReadable];
于 2015-01-24T21:04:19.057 回答