我的团队正在开展一个项目,涉及通过蓝牙将传感器数据从数据记录器模块传输到移动应用程序。我有兴趣找到一种相对快速,可靠的方法来存储数据记录器收集的数据。由于我们无法保证在移动应用程序和数据记录器之间始终具有可靠的蓝牙连接,因此我们需要一种方法来标记哪些记录与移动应用程序同步,哪些记录尚未发送,以便即使移动应用程序超出范围,数据记录器也可以继续收集数据。我们以4Hz的速度连续收集数据,因此我预计,只要移动应用程序请求数据,我们就会有太多数据使用平面文件并手动遍历每条记录。
我对嵌入式编程非常陌生(几乎没有任何先前的经验),但具有先前的移动应用程序开发经验。我的第一个想法是将数据存储在SQLite数据库表中,并包含一个名为“IsSynchronized”的列,该列可以存储一个布尔值以指示已同步的数据点。当移动应用程序请求数据时,“IsSynchronized == false”的记录将被传输到移动应用程序。一旦成功,移动应用程序将让数据记录器知道传输成功,并为每个同步记录将IsSynchronized列设置为true。如果数据从移动应用程序传输到服务器,我就是这样做的,但我不知道这对于移动应用程序的嵌入式数据库是否是一个好主意。
我们的数据记录器使用Atmel-SAM4S微处理器。我们有8GB的闪存,因此存储不是问题。我们的RAM非常有限;我们只有160KB。我们正在与外部供应商合作设计数据记录器。他们开发了一个自定义的手动操作系统,但由于它不包含虚拟文件系统,我们不确定SQLite是否适合我们。我听说其他人在SAM4S上使用uClinux或其他基于Unix的操作系统来容纳SQLite(http://sqlite.1065341.n5.nabble.com/VFS-for-an-MCU-internal-flash-td83079.html),但我不知道这有多实用。
我的问题是: