Il giorno Mon, 21 Sep 2015 23:54:06 +0200 giulianc51 <giulian...@gmail.com> ha scritto:
ciao a tutti, scusate se riprendo questo thread ma dopo qualche lettura e ripensamento(*) vorrei riapprocciare l'argomento e volevo verificare con voi alcune cose; metto sotto per i più pazienti qualche dettaglio ed entro subito in argomento; il loop di interrogazione continua del device freezza la gui che riappare solo a fine ciclo impedendomi di seguire sulla mappa il percorso del gps, da quì la necessità di attingere ai threads: non vedo altra soluzione; userei due soli threads: il thread principale (gui) e il thread secondario (polling del device); Summerfield, Rapid Gui Programming..., cap. 19, consiglia l'uso dei QThreads e seguendo i suoi esempi pensavo di creare un QThread dove mettere la gestione del device con i metodi GO e PAUSE; quando è attivo il thread aggiorna la variabile(**) position (una stringa NMEA) emettendo il signal valueChanged()(***); la GUI connette questo segnale ad una funzione di lettura di position e di aggiornamento della maschera; alla lettura/scrittura della variabile nelle due procedure metterei un lock; c'è qualche altro aspetto che devo considerare prima di scrivere codice? grazie dell'attenzione, ciao, giuliano ---- DETTAGLI ---- sto interrogando un device che emette dati in modo continuo (gps) e voglio visualizzare in una GUI le risposte, sia in forma tabellare che in forma grafica (mappa); le mie interrogazioni sono di due tipi: waypoints (interrogazioni puntuali) e tracks (interrogazioni continue); waypoints (mi interessa registrare il singolo punto del gps): dopo aver sperimentato (almeno così presumo :-) che gpsd fornisce una coda di eventi generando una latenza non compatibile con il mio progetto, sono passato al modulo serial; questo mi permette, pur in presenza di un comportamento analogo a gpsd, di eliminare la coda e incorporare l'ultimo dato fornito dal device; in realtà anche quì noto una certa latenza, ma questa non mi impedisce di raggiungere, magari con una permanenza di qualche minuto sul punto, l'obiettivo che mi prefiggevo; ovviamente qualsiasi info, consiglio, critica, ecc. su questa modalità è ben accetta :-) tracks (mi interessa registrare in modo continuo i punti inviati dal gps): questa modalità mi crea il problema indicato nel post; ---- NOTE ----- (*) temo purtroppo di non aver capito del tutto i consigli che mi avete già dato: me ne scuso, ma il livello era un pò troppo alto per me :-( (**) forse potrei gestire una coda ma non essendo interessato a TUTTI i punti emessi penso che basti una variabile che contiene l'ultimo; ovviamente se attivo qualche altra attività nella gui perdo qualche punto ma questo, fino a prova contraria, non dovrebbe essere un problema: è corretto? (***) oppure potrei lasciare sempre attivo il polling del device e con i commandi GO e PAUSE connettere/disconnettere il signal allo slot: quale preferibile? _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python