Creazione di grafici dinamici a cui passare parametri in tempo reale



  • Ciao a tutti.
    Questi giorni sto cercando di imparare a utilizzare le librerie QtCharts e devo dire che mi sembrano molto potenti e utili... se non fosse per il solito problemino che non riesco a capire come utilizzare i metodi delle classi in modo opportuno !

    Vorrei realizzare questo: il mio main invia e riceve dati da uno o più dispositivi che comunicano tramite una unica porta seriale .
    Attualmente riesco a gestire la comunicazione coi dispositivi e inviare e ricevere i dati da essi.
    Vorrei quindi creare un grafico per ogni dispositivo e plottare in tempo reale i rispettivi dati (temperatura, umidità, intensità luminosa etc...).
    Son riuscito a utilizzare uno degli esempi e a farlo funzionare con un solo dato di un solo dispositivo.
    Il problema si pone quando voglio plottare sulla stessa finestra più serie di dati...

    Avreste qualche suggerimento su come impostare queste funzionalità?
    Io ho provato ad appoggiarmi a questo esempio che sfrutta le QSplineSeries: http://doc.qt.io/qt-5/qsplineseries.html

    Grazie a tutti,
    Mik



  • Se posti un po' del tuo codice magari riusciamo ad aiutarti di piu'
    dovresti gestire il tutto asincrono (con signal e slot) e aggiungere un punto ogni volta che arriva un nuovo dato.

    quando serialport emette readyRead() e ci sono abbastanza byte disponibili leggi l'informazione e emetti un segnale newDataRead(const QDateTime& when, double val); che e' connesso al grafico che aggiunge il punto alla serie



  • Ciao grazie per al risposta!

    Alla fine ho risolto in altro modo, sfruttando un widget che mi ha semplificato molto la vita!
    Il widget lo si trova qui: http://www.qcustomplot.com/

    Lo trovo decisamente più intuitivo dei widget e delle librerie offerte da Qt ... forse semplicemente perchè sono ancora troppo scarso per sfruttarle al meglio!!! :D

    Grazie ancora
    Mik


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.