我已经浏览了“日志”和“数据记录器” API,但无法得知数据记录器几乎已满。我找到了具有以下路径“ / Mem / Logbook / IsFull”的API调用。如果我了解正确,则会在日志已满且数据记录器停止记录时通知我。
所以我的问题是:有没有办法知道当前正在使用多少内存,以便在EEPROM装满并清除之前对旧数据进行清理(需要对它们进行一些计算)。数据记录器停止记录?
答案 0 :(得分:1)
Logbook / DataLogger的数据存储器在概念上是环形缓冲区。这就是 / Mem / DataLogger / IsFull 始终在Movesense传感器上返回 false 的原因(Suunto在情况不同的手表中使用相同的API)。因此,传感器永不停止记录,只是将最旧的数据替换为新的数据。
您可以使用以下两种策略:
计划A:
B计划
每隔一段时间,然后启动一个新日志并处理上一个日志。这样,日志永远不会覆盖您尚未处理的内容。
计划C
(注意:此级别较低,可能会在以后的某些Movesense传感器版本中中断)
使用 / Component / EEPROM API获取EEPROM芯片#0的前256个字节。该区域包含许多ExtflashChunkStorage :: StorageHeader结构(请参见: ExtflashChunkStorage.h ),其余部分填充为0xFF。 0xFF之前的最后一个StorageHeader是当前的StorageHeader。使用该StorageHeader,可以看到环形缓冲区的起始位置( firstChunk )和下一个数据写入的位置( cursor )。两者的区别在于已使用的内存。 (注意:由于是环形缓冲区,所以差异可能为负。在这种情况下,请在其中添加“日志区域的大小-256”)
完全公开:我为Movesense团队工作