2010/11/30 matteo ruffoni <mattruffoni@xxxxxxxxx>: > > 1)il file che fa i grafici di dati casuali in real time è qui > http://eli.thegreenplace.net/2008/08/01/matplotlib-with-wxpython-guis/ (il > secondo esempio) e se ho ben capito i dati che grafica si trovano nella > classe DataGen sotto le voci > > def _recalc_data(self): > delta = random.uniform(-0.5, 0.5) > r = random.random() Hai capito benissimo, sì. La classe GraphFrame registra un timer per ridisegnare il grafico ogni 100ms. Ogni volta che il timer scatta, se la "raccolta dati" non è stata fermata, chiama la classe DataGen e si fa restituire un nuovo numero da aggiungere ai dati che ha in memoria (il metodo on_redraw_timer). > 2) forse dovrei riuscire, ovviamente non ne sono sicuro, a sostituire > delta(?) e r(?) , con idati provenienti dalle accelerezioni dello wimote, > che dovrebbero essere fornite dalle librerie cwiid > e sono nei campi(?) cwiid.Y Puoi senz'altro farlo, sì - l'altro script che hai postato ti fa vedere come si leggono i dati da cwiid, potresti cavartela già così: def _recalc_data(self): ax, ay, az = [], [], [] messages = wiimote.get_mesg() # Get Wiimote Messages for mesg in messages: # Loop through Wiimote Messages if mesg[0] == cwiid.MESG_ACC: # If a accelerometer message ax.append( mesg[1][cwiid.X] ) ay.append( mesg[1][cwiid.Y] ) az.append( mesg[1][cwiid.Z] ) #adesso che hai i tre array delle accelerazioni, li puoi usare #per calcolare delta ed r delta = ... r = ... Ovviamente, le funzioni per delta ed r te le inventi a gusto. Ricordati di gestire il caso in cui gli array sono vuoti - potresti avere il Wiimote spento. > Sto "studiando" python da una settimana quindi non sono in grado di usare un > linguaggio adatto e non so nemmeno se le soluzioni che ho individuato sono > quelle giuste. Beh, per essere alle prime armi hai già messo le mani su "roba buona"! > Un file che fa dei grafici ragionevoli, ma non in real time, è qui > http://convolutedlogic.com/projects/wiimote/index.htm e si chiama > wiimote_record_accel_vel_pos.py Per graficare questi, devi cambiare la logica della classe wxPython/matplotlib che hai postato: quella usa un'unica variabile in y, e un semplice indice di iterazione in x. Potresti usare un thread[1] separato, che raccoglie i dati del Wiimote e li accumula in un semplice array di tuple etichettate con il tempo di lettura: data = [ (t0,ax0,ay0,az0),...] Poi la classe che grafica la modifichi per visualizzare quel che ti pare di questi dati. Spero di non aver sparato troppo in alto, e che i suggerimenti ti tornino utili! Antonio [1] http://www.doughellmann.com/PyMOTW/threading/index.html -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx