Buenas tardes, estoy pensando en cual sería la forma más eficiente de realizar la tarea que tantas veces se trata en este foro sobre la recolección de datos de sensores, su almacenado en un fichero dentro de una SD y su posterior envio a través de algún canal de comunicación (BT, BLE, WIFI, GSM/GPRS, XBEE...etc).
Bien, la idea es bastante simple y además hay mucho código publicado. El protocolo a seguir sería algo así:
1.- Leer los sensores y obtener los datos.
2.- Abrir el fichero si existe o crearlo en caso contrario y escribir los datos en el.
3.- Cada cierto tiempo establecer una conexión, abrir el fichero, leer los datos disponibles desde el ultimo envio y enviarlos.
Lo que me gustaría debatir es cual sería la mejor manera de realizar el punto 3, teniendo presente que entre envio y envio se producen múltiples escrituras en el fichero (varias lecturas de sensores) y por supuesto solo debemos enviar los datos escritos en el fichero desde el ultimo envio.
He buscado información y he visto que mucha gente opta por crear un nuevo fichero en la SD con otro nombre, usando por ejemplo la fecha, aunque podría hacerse de muchas formas. Almacena el nombre del ultimo fichero creado y en el próximo envio solo enviara los datos de este ultimo fichero, volviendo a crear otro nuevo tras el envio y guardando los siguientes datos en el. Esta parece una buena solución, por ponerle un pero sería que tendriamos un fichero por cada envio que hagamos, que pueden ser varios al día.
Otro posible método que se me ocurre sería, como todos los datos almacenados en el fichero llevan su timeStamp, podemos almacenar el timestamp de la ultima fila enviada y comenzar en el proximo envio a partir de ella. No me parece mala idea crear otro fichero "envios.txt" en el que creamos una fila por cada envio, indicando datos como fecha del envio, si fue correcto y el timestamp de la ultima fila enviada. En el siguiente envio, recuperamos ese dato y enviamos lo que tengamos a partir de el.
A parte de estos dos "métodos" a ver si alguién quiere aportar más ideas, espero haberme explicado bien.
Saludos y gracias.