Sto scrivendo un programma GUI JavaFX per la configurazione utente di un dispositivo di sistemi embedded. Il dispositivo sarà collegato tramite una connessione seriale cablata o wireless che non è affidabile al 100%. Pertanto, quando l'utente apporta modifiche alle impostazioni nella GUI, il programma invia un messaggio al dispositivo, quindi deve verificare che siano impostati.
La mia domanda è quali strutture del programma sono utili per questo scopo. Il mio approccio attuale è
-
Una classe chiamata
Sync
che contiene due variabili correlate alla particolare impostazione. Uno è legato all'impostazione come appare nella GUI e un'altra all'impostazione così come è stata ricevuta dal dispositivo. -
Una proprietà in
Sync
che descrive se le due impostazioni sono uguali, se il dispositivo sta impostando è più recente o se l'impostazione della GUI è più recente. Le decorazioni sul campo si legano quindi a questa impostazione. -
Un pulsante chiamato
set
che invia un messaggio impostato al dispositivo -
Un ciclo che esegue continuamente il polling del dispositivo per le sue impostazioni (che sono memorizzate nella classe Sync). I decoratori danno quindi un feedback all'utente se le impostazioni sono state sincronizzate.
Mi piacerebbe fare qualcosa di un po 'più elegante dove la classe Sync si occupa di inviare messaggi e verificare se le impostazioni sono state impostate.
Alcune domande specifiche:
-
Devo rimuovere il pulsante "set" e far sì che la classe Sync aggiorni il dispositivo ogni volta che ha impostazioni valide?
-
Una decorazione è sufficiente per indicare se l'impostazione è stata impostata o meno? Sarebbe meglio una finestra di dialogo?
Alcune domande generali:
-
Esiste un approccio migliore a questo problema?
-
Ci sono classi comuni che potrebbero essere utili?
-
Altri progetti alternativi?
Modifica:
Un vincolo: mi piacerebbe mantenere il dispositivo il più stupido possibile. Ho implementato protocolli personalizzati con CRC, ack / nack, tentativi, buffer dei messaggi, ecc. Prima, anche se tra due sistemi embedded. Il software verrà modificato per diversi progetti Arduino per principianti e voglio mantenere la maggior parte della logica (anche la validazione) sul lato GUI.