Arduinoからシリアルデータを読み込んでUIに送信するのに問題があります。すべてのシリアルデータを3つの別々の変数に分割するのは面倒で、特定の数値を得るためには左と中央を使いました。今の問題は、LCDディスプレイで変化するのがわかるのに、私が得た数字は変わらないということです。シリアル通信でQStringの数字が同じになる
void Dolle::serialReceived(){
ba = serial->readAll();
serialBuffer += QString::fromStdString(ba.toStdString());
QString bufferSplit = serialBuffer;
QString hum = bufferSplit.left(2);
QString temp = bufferSplit.mid(2, 2);
QString gas = bufferSplit.mid(4, 4);
if((hum.size()==2) && (temp.size()==2) && (gas.size()==4)){
ui->humLabel->setText("Humidity: "+hum+" %");
ui->tempLabel->setText("Temperature: "+temp+(char(176))+ "C");
ui->gasLabel->setText("Gas level: "+gas);
qDebug() << hum << temp << gas;
}
}
バッファにデータを追加しますが、同じ位置からデータを読み取り、それをラベルに設定します。あなたは 'serialBuffer = QString :: fromStdString(ba.toStdString());'ではないと確信していますか?また 'stdString'変換も不要です。 – thuga
私はこれをしました。なぜなら、ターミナルに流出した数字は何の順序もなくランダムにまとめられていたからです。また、baはQByteArrayであり、変換が必要だと思った理由です。 – giggitygoat
どちらにせよ、あなたは 'serialBuffer'から同じデータを繰り返し読み込んでいます。 – thuga