从 BLE 设备读取日志数据记录
Reading log data records from a BLE device
我正在实施一个 BLE 设备,它存储一些基于传感器数据的日志数据,以及一个 iOS 应用程序,它作为一个中心来访问数据。
我知道如何读取 GATT 特性数据,但我不知道如何从设备中读取一堆。
有没有标准化的方法来做到这一点?
我天真的方法如下:
- 创建包含日志记录数的自定义只读特征 (A)
- 创建包含记录索引的自定义只写特征 (B)
- 创建一个自定义只读特征 (C),其中包含索引为 (B) 的日志记录的数据。
- 创建自定义只写特性 (D) 以删除所有存储的记录。
要获取日志数据,我必须读取记录数 (A),然后执行循环并将索引写入 (B) 并读取数据 (C)。
这是要走的路还是有更好的方法?
我的日志数据记录将包含一个时间戳和一个带有传感器数据的 8 位值。
这是一个好方法,它会起作用,但是如果你 总是 读取所有记录,那么从中央进行多次写入是低效的(在一个环形)。相反,您可以只从中央执行一次写入,然后外围设备上的代码将进入循环并将所有数据发送到中央。在这种情况下,您的解决方案将在 GATT 服务器上具有以下内容:-
- 需要通知的自定义特征。
仅此而已,这就是您所需要的。当你想读取日志数据时,可以使用如下顺序:-
- 中心设备在外围设备上启用通知。
- 外围设备通过第一组日志向中央设备发出通知。
- 外围设备通过第二组日志向中央设备发出通知。
- 外围设备会不断向中央设备发送通知,直到日志列表完成。
- 外围设备可以发送一个特殊的通知(例如全0),表示所有的日志都发送完毕。或者,外设可以完全停止发送通知,并且不活动将向中央指示没有更多数据要发送。
- 中央然后可以禁用外围设备上的通知,以便不发送新数据。中央实际上可以通过禁用通知随时停止日志的传输。
最后,您可以将您的特征设置为可指示的而不是可通知的。唯一的区别是在可指示时会有确认,因此传输更可靠。但是,由于额外的确认数据包,传输也会变慢。
希望对您有所帮助。
我正在实施一个 BLE 设备,它存储一些基于传感器数据的日志数据,以及一个 iOS 应用程序,它作为一个中心来访问数据。
我知道如何读取 GATT 特性数据,但我不知道如何从设备中读取一堆。 有没有标准化的方法来做到这一点?
我天真的方法如下:
- 创建包含日志记录数的自定义只读特征 (A)
- 创建包含记录索引的自定义只写特征 (B)
- 创建一个自定义只读特征 (C),其中包含索引为 (B) 的日志记录的数据。
- 创建自定义只写特性 (D) 以删除所有存储的记录。
要获取日志数据,我必须读取记录数 (A),然后执行循环并将索引写入 (B) 并读取数据 (C)。
这是要走的路还是有更好的方法?
我的日志数据记录将包含一个时间戳和一个带有传感器数据的 8 位值。
这是一个好方法,它会起作用,但是如果你 总是 读取所有记录,那么从中央进行多次写入是低效的(在一个环形)。相反,您可以只从中央执行一次写入,然后外围设备上的代码将进入循环并将所有数据发送到中央。在这种情况下,您的解决方案将在 GATT 服务器上具有以下内容:-
- 需要通知的自定义特征。
仅此而已,这就是您所需要的。当你想读取日志数据时,可以使用如下顺序:-
- 中心设备在外围设备上启用通知。
- 外围设备通过第一组日志向中央设备发出通知。
- 外围设备通过第二组日志向中央设备发出通知。
- 外围设备会不断向中央设备发送通知,直到日志列表完成。
- 外围设备可以发送一个特殊的通知(例如全0),表示所有的日志都发送完毕。或者,外设可以完全停止发送通知,并且不活动将向中央指示没有更多数据要发送。
- 中央然后可以禁用外围设备上的通知,以便不发送新数据。中央实际上可以通过禁用通知随时停止日志的传输。
最后,您可以将您的特征设置为可指示的而不是可通知的。唯一的区别是在可指示时会有确认,因此传输更可靠。但是,由于额外的确认数据包,传输也会变慢。
希望对您有所帮助。