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

时间:2018-12-13 12:24:32

标签: bluetooth bluetooth-lowenergy gatt bluetooth-gatt

我正在实现一个BLE设备,该设备基于传感器数据存储一些日志数据,并实现一个iOS应用,该应用充当中央访问数据。

我知道如何读取GATT特征数据,但我想知道如何从设备中读取大量数据。 有标准化的方法可以做到这一点吗?

我的幼稚方法是:

  • 创建一个自定义的只读特性(A),其中包含日志记录的数量
  • 创建包含记录索引的自定义只写特性(B)
  • 创建一个自定义的只读特性(C),其中包含索引为(B)的日志记录的数据。
  • 创建自定义的只写特性(D)以删除所有存储的记录。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

  • 可通知的自定义特征。

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

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

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

我希望这会有所帮助。