Setup: ho un certo numero di dispositivi biometrici, ognuno dei quali registra blocchi di dati di 24 ore su 48 ore che devono essere contrassegnati con il timestamp con la data di inizio di ogni registrazione. Ogni dispositivo deve essere connesso a un PC di volta in volta, a quel punto funzionano come supporti di memorizzazione rimovibili, consentendo il download dei dati raccolti. Ho il controllo del design sul software (.NET) sul PC e alcuni controlli di progettazione limitati sul firmware del dispositivo.
Problema: ogni dispositivo mantiene una data / ora interna e una batteria dell'orologio mantiene questo orologio funzionante anche quando non è alimentato, ma non è intelligente per sapere nulla sull'ora legale o sui fusi orari. Di conseguenza, questo dispositivo a volte non è sincronizzato e deve essere ripristinato manualmente. Il design fisico del dispositivo impedisce qualsiasi cosa diversa dall'utilizzo della memoria rimovibile (una scheda SD) mentre è collegata al PC: non posso inviare comandi direttamente al processore principale del dispositivo. La risoluzione fino al minuto è abbastanza buona.
Soluzione possibile: mentre è connesso a un PC, il software potrebbe scrivere la data / ora locale del PC su un file sulla scheda SD del dispositivo e al successivo avvio del dispositivo potrebbe leggi quel file e usalo per impostare la sua data / ora interna. Tuttavia, se il dispositivo non viene immediatamente riacceso da un utente (e non c'è modo di farlo rispettare), la data / ora che è stata scritta sulla scheda sarà spenta di pochi minuti a giorni. Quello che ho davvero bisogno di sapere è l'attuale data / ora interna sul dispositivo nell'istante in cui si avvia in modalità USB, nonché la data / ora locale sul PC quando il dispositivo è stato collegato (supponiamo che questi accadano entro un minuto di l'un l'altro). Il software può quindi scrivere il delta sulla scheda SD e il dispositivo può utilizzare quel delta per regolare la data / ora interna sul dispositivo. Questo risolve anche le situazioni in cui il dispositivo rimane spento per giorni.
Domanda: Qualcun altro ha avuto a che fare con questo tipo di situazione e, in caso affermativo, sto affrontando questo nel modo giusto? Qualcuno ha qualche suggerimento alternativo o ci sono delle insidie che devo fare attenzione con l'implementazione proposta?