|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
[JAVA] Lettura da seriale in thread separato, come generare interrupt per informare?
Ciao a tutti!
Sto facendo un programma in Java che mi permette di comunicare con Arduino (per chi sa cosa sia Fatto da sta che tale hardware comunica via seriale. Il mio programma quando premi "connect" tenta prima di aprire una seriale e se ci riesce manda una richiesta ad Arduino con una stringa "CCC" (Can Create Connection) e se arduino risponde ok lo da come connesso. Da qui in poi il programma deve controllare la seriale e vedere quando ho dei dati, riceverli restituirmi il blocco di dati trasmesso sia esso un array di char o di byte. Per il momento nel mio programma c'è un while(true) che controlla continuamente se la seriale ha dati disponibili e nel caso li legge...ovviamente questo non è pensabile... Ho pensato allora di creare un thread separato per farlo... E' possibile che tale thread mi generi un interrupt o simile in modo da avvisare il programma che sono presenti dati da leggere? O ancora meglio: esiste un interrupt della seriale che mi avverta che mi stanno mandando dati?
__________________
Lego ™ Fans Club |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
dipende dalla libreria che usi per leggere dalla seriale ma in generale se non è una chiavica dovrebbe già gestire la sospensione del thread in termine di "blocco", non diversamente da quanto capita quando cerchi di leggere dei dati da un socket.
Le "comm library" di Sun (RXTX per un'implementazione) supportano la lettura bloccante e la gestione dello stato attraverso gli eventi, vale a dire che quando c'è qualcosa da leggere ti arriva un segnale SerialPortEvent.DATA_AVAILABLE e da lì in poi leggi da un InputStream, che è bloccante. Altro non saprei dire, l'ultima volta che mi sono cimentato nella lettura di una porta seriale era per il portatile di cristoforo colombo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
ehm...la connessione è USB ma emula una seriale da quello che ne so
Cmq uso proprio le RXTX...avevo visto esattamente quello di cui parli tu, data available, solo che non ho capito bene, nonostante ricerche in rete, come usarlo... Se vuoi ti posto la classe che uso ora per leggere, scrivere...
__________________
Lego ™ Fans Club |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
|
|
|
|
|
|
#5 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21911
|
puoi usare un socket per far comunicare i 2 thread
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:31.



















