Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

[JAVA] Timer ticker

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] [JAVA] Timer ticker

Messaggioda Foto UtenteTardoFreak » 16 nov 2010, 19:52

Innanzi tutto un saluto a tutti i partecipanti ed un ringraziamento a chi mi ha aiutato fino ad ora.

Lo studio procede bene, sono riuscito a creare una combo box con la lista delle porte COM presenti sul PC. Ora c'e' pero' un problema: vorrei aggiornare di continuo la lista delle porte. Se io, durante il funzionamento del programma, inserisco una porta seriale (tramite adattatore USB) questa diventera' visibile, quindi me ne dovrei accorgere in qualche modo ed aggiornare la lista.
In visual basic c'e' un controllo timer che genera un' evento ogni tot di tempo. All' interno della subroutine di gestione dell' evento si mettono i servizi come quello che dovrei fare io. Ad intervalli prefissati il timer mi richiama la subroutine di aggiornamento della lista.

In Java c'e' qualcosa del genere?
Ci sono sistemi alternativi?

Ho adottato javax.comm (e' molto ben documentato) ma potrei usare anche RxTx, visto che l' ho gia' scaricato.

Ringrazio anticipatamente.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[2] Re: [JAVA] Timer ticker

Messaggioda Foto UtenteLelettrico » 16 nov 2010, 20:01

Timers in Java ce ne sono di due tipi, pero' il tuo deve interagire con la GUI aggiornandola, problema ben descritto da SUN nel suo sito:

http://download.oracle.com/javase/tutorial/uiswing/misc/timer.html
Avatar utente
Foto UtenteLelettrico
2.458 1 4 6
Master
Master
 
Messaggi: 1108
Iscritto il: 13 set 2010, 12:24

0
voti

[3] Re: [JAVA] Timer ticker

Messaggioda Foto Utenteposta10100 » 17 nov 2010, 9:36

Aggiornare la GUI in Java sembra facile ma spesso fa tutto il contrario di cio che ci si aspetta!
Il problema e` che Java considera la GUI secondaria rispetto alle altre istruzioni.
Se il tuo programma non fa nulla di particolare e non utilizza in modo intensivo la cpu allora ti basta un semplice timer (oggetto Timer presente in Java) che ripopola la combo con le nuove porte.
Nel tuo caso il repaint non e` necessario in quanto verra` rifatto in automatico al momento in cui clicchi con il mouse sulla combo.
Se invece la cpu e` utilizzata in modo intensivo si dovra` pensare ad una applicazione multi-thread (qui te ne avevo fatto un esempio) in cui un thread si occupa di gestire timer e grafica e l'altro fa le operazioni che tanto impegnano la cpu.
Se poi hai piu` di una cpu i 2 thread vengono gestiti su diverse cpu senza fermare un processo per gestire l'altro.

O_/
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[4] Re: [JAVA] Timer ticker

Messaggioda Foto UtenteTardoFreak » 18 nov 2010, 12:19

Grazie mille per le risposte (gentilissimi come sempre). :-)

Ora provo l' oggetto timer. :ok:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti