从 BLE 设备读取日志数据记录

Reading log data records from a BLE device

我正在实施一个 BLE 设备,它存储一些基于传感器数据的日志数据,以及一个 iOS 应用程序,它作为一个中心来访问数据。

我知道如何读取 GATT 特性数据,但我不知道如何从设备中读取一堆。 有没有标准化的方法来做到这一点?

我天真的方法如下:

要获取日志数据,我必须读取记录数 (A),然后执行循环并将索引写入 (B) 并读取数据 (C)。

这是要走的路还是有更好的方法?

我的日志数据记录将包含一个时间戳和一个带有传感器数据的 8 位值。

这是一个好方法,它会起作用,但是如果你 总是 读取所有记录,那么从中央进行多次写入是低效的(在一个环形)。相反,您可以只从中央执行一次写入,然后外围设备上的代码将进入循环并将所有数据发送到中央。在这种情况下,您的解决方案将在 GATT 服务器上具有以下内容:-

  • 需要通知的自定义特征。

仅此而已,这就是您所需要的。当你想读取日志数据时,可以使用如下顺序:-

  1. 中心设备在外围设备上启用通知。
  2. 外围设备通过第一组日志向中央设备发出通知。
  3. 外围设备通过第二组日志向中央设备发出通知。
  4. 外围设备会不断向中央设备发送通知,直到日志列表完成。
  5. 外围设备可以发送一个特殊的通知(例如全0),表示所有的日志都发送完毕。或者,外设可以完全停止发送通知,并且不活动将向中央指示没有更多数据要发送。
  6. 中央然后可以禁用外围设备上的通知,以便不发送新数据。中央实际上可以通过禁用通知随时停止日志的传输。

最后,您可以将您的特征设置为可指示的而不是可通知的。唯一的区别是在可指示时会有确认,因此传输更可靠。但是,由于额外的确认数据包,传输也会变慢。

希望对您有所帮助。