[Python] nuova iscrizione e ... presentazione

giulianc51 giulianc51 a gmail.com
Lun 5 Ott 2015 11:21:19 CEST


Il giorno Mon, 21 Sep 2015 23:54:06 +0200
giulianc51 <giulianc51 a 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?


Maggiori informazioni sulla lista Python