Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Sistemi integrati - Miglior metodo per lettura e plot di dati da una seriale
Forum - Sistemi integrati - Miglior metodo per lettura e plot di dati da una seriale

Avatar
lucky (Member)
Rookie


Messaggi: 32
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 15:51
Mercoledì, 05/08/2015
Salve community,
mi affido alla vostra squisita competenza.
Mi trovo a dover lavorare su un UDOO Quad, un dispositivo che integra su una board una CPU Quad core e un arduino il tutto con tanto di modulino Wifi, ingresso SATA etc. Insomma una bella bestiolina. Il target di questo dispositivo sarebbe quello di un oggetto che riesce a dialogare con strumentazione elettronica quali sensori, motori, potenziometri digitali etc. magari attraverso l'arduino onboard, e che riesca a fornire un'interfaccia con "il resto dell'universo" tramite le più svariate modalità(server http, ssh, ftp, vnc, o qualsiasi altra cosa riusciate a far girare  su un Pinguino). Ho caricato un banalissimo programmino sull'arduino onboard di questa scheda, il quale non fa altro che leggere un pin di input analogico e sputare il livello letto su una seriale in formato ASCII una riga per volta. Il mio dilemma è il seguente, posto che sta bestiola mi tira fuori una quantità spropositata di dati al secondo, come fare per leggerne "il più possibile" e semplicemente rappresentarli come punti su un diagramma cartesiano in aggiornamento continuo. Un po' come fa un logger. Al momento ho realizzato, anche aiutandomi con il materiale in rete, un programmino in python che sfrutta al libreria matplotlib per raggiungere lo scopo. Tuttavia ho sempre l'impressione che il tutto sia sempre troppo lento. Mi sembra di aver capito che il collo di bottiglia in tutto il processo sia proprio il disegnare il punto sul grafico al che pongo le domande:
1) Posto che il python vada bene per la questione, qual'è il miglior modo per mostrarmi i dati presi da questa seriale?
2) Posto che con il python io non posso andare oltre un certo limite, devo passare al C?
3) In tal caso tutta la questione come andrebbe risolta?

Grazie in anticipo della disponibilità

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:54
Mercoledì, 05/08/2015
Cambiare linguaggio non ti darà un grande vantaggio in termini di performance; è probabile che l'algoritmo che hai implementato per disegnare probabilmente fa troppe chiamate alla funzione che "renderizza" il grafico.

Salva i dati di input che ricevi dall'arduino, ma non renderizzarli subito; avvia un thread secondario e fai l'update del grafico una volta ogni tot secondi.


Il mio blog: https://piero.dev
PM Quote
Avatar
lucky (Member)
Rookie


Messaggi: 32
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 15:02
Giovedì, 06/08/2015
Ciao Piero,
grazie della pronta risposta.
Avevo intuito che il problema fosse proprio il fatto che la finestra del grafico venga ridisegnata ad ogni immissione di dati e credo sia proprio questo che mi ruba la maggior parte del tempo. Quella del separare i due task su due thread diversi mi sembra una buona idea che proverò a portare avanti, tuttavia devo vedere se è possibile forzare matplotlib (or similia) a non ridisegnare tutta la finestra grafica. Hai qualche esperienza in merito?
Grazie ancora!

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 20:14
Lunedì, 10/08/2015
Testo quotato

Postato originariamente da lucky:e sputare il livello letto su una seriale in formato ASCII una riga per volta.


Non è un consiglio che dovrebbe portarti ad una soluzione. Ma in ogni caso adoperare la codifica ACHII in una trasmissione seriale di dati non è una buona scelta, si perde tempo nella codifica e decodifica dei dati, inoltre si crea ridondanza inutile.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:17
Lunedì, 10/08/2015
ACHII ... è il verso di una canzone? Una esclamazione sumerica? Un grido di guerra giapponese...?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 9:54
Martedì, 11/08/2015
Ahahahahah scusate, non ci ho nemmeno fatto caso, e dire che l'ho anche riletto prima di pubblicare.

PM Quote