gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:13:16 27 4
gpt4 key购买 nike

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

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

我天真的做法如下:

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

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

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

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

最佳答案

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

  • 可通知的自定义特征。

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

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

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

希望对您有所帮助。

关于bluetooth - 从 BLE 设备读取日志数据记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53761807/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com