Salve a tutti.
Sto cercando di mostrare a grafico il dato che riceve da una porta seriale. Tramite il compilatore Atollic True Studio ho programmato un sensore (VL53L0X) di prossimità che invia il dato della distanza rilevata (data) tramite porta seriale al compilare Qt per creare l'interfaccia e quindi il grafico.
void MainWindow::readData()
{
const QByteArray data = m_serial->readAll();
// qDebug()<<data;
inviaData(data);
}
Facendo il qDebug si vede però che il dato non è pulito:
"200
0\n"
"1"
"999\n"
Quando il dato dovrebbe essere: "2000\n"
così mi hanno suggerito di farlo passare per una stringa e successivamente ripuirlo in modo da avere solo il numero
Nella funzione:
QByteArray charBuffer;
void MainWindow::inviaData(const QByteArray &data)
{
QStringList List;
QString ran;
charBuffer.append(data);
if (data.contains("\n"))
{
QString myString(charBuffer);
List = myString.split(':');
qDebug() << List <<sizeof (List) << endl;
charBuffer = "";
ran = (double)List[1];
} else {
return;
}
rand = ran.toDouble();
]
Ho creato List che stampa: ("2000 \n").
Qui viene il mio problema, come faccio a ripulirlo delle parentesi, virgolette ed \n per avere solo il dato puro?
Come faccio ad associare (usando qcustomplot, una estensione di Qt) data e il tempo come coordinate del grafico?
In realtà la coordinata x, con
QSharedPointer<QCPAxisTickerTime> timeTicker(new QCPAxisTickerTime);
m_plot->xAxis->setTicker(timeTicker);
timeTicker->setTimeFormat("%s");
gli associo il tempo come valore, solo non riesco ad associare entrambi i valori.
Chiedo scusa se sono stato prolisso ma spero di essere stato abbastanza chiaro.