Problema con QString
-
Dunque , sto realizzando un programmino semplice per la rilevazione della temperatura e umidità con arduino. Ricevo correttamente i dati da arduino, ma li visualizzo a schermo nella Qstring piu o meno così:
"" "52" " 22" "5 " "2 22" "" "52 2" "2"
Ora anche constrollando con il debug la situazione non mi sembra diversa.
Come potrei fare per averli sulla stessa linea per poi processare la stessa stringa e ottenere i valori da visualizzare su un grafico?Inserisco anche il blocco di codice in cui ho scritto la lettura dei valori :
arduino->waitForReadyRead(500); while (c != b){ //imposto una condizione che mi crea un loop continuo arduino->waitForReadyRead(2000); //imposto la lettura ogni 2 secondi lettura.append(arduino->readAll()); //leggo il contenuto della seriale e la metto nella stringa lettura.remove("\r",Qt::CaseSensitive); // elimino i caratteri di formattazione che sono presenti nella stringa lettura.remove("\n",Qt::CaseSensitive); qDebug() << lettura; //visualizzo il tutto lettura.clear(); //pulisco e ricomincio }
-
li manda come codici Ascii
ho letto nelle specifiche ,
mentre la libreria del sensore usa le seguenti caratteristicheDHT_Unified::DHT_Unified(uint8_t pin, uint8_t type, uint8_t count, int32_t tempSensorId, int32_t humiditySensorId): _dht(pin, type, count), _type(type), _temp(this, tempSensorId), _humidity(this, humiditySensorId)
-
dichiara
QByteArray m_arduinoData;
nella parteprivate:
poi nel costruttore aggiungiQObject::connect(arduino,&QIODevice::ReadyRead,this,[this,arduino]()->void{ m_arduinoData.append(arduino->readAll()); for(int i=0;i<m_arduinoData.size();++i){ if(QChar(m_arduinoData.at(i)).isDigit()) continue; if(i>0) qDebug() << m_arduinoData.left(i); if(i+1==m_arduinoData.size()) m_arduinoData.clear(); else m_arduinoData = m_arduinoData.mid(i+1); i=-1; } });
Probabilmente sarebbe meglio usare QTextStream ma non so come sono formattati i tuoi dati quindi ho dovuto arrangiarmi