~本次添加了的功能:
将从下位机接受到的数据以Json文件的形式储存,并解析出各个子数据并更新组件显示。
将每次传输的数据添加入test.json
文件里。
数据格式:
1 2 3 4 5 6 7 8
| { "TEMP":100, "axyz":[10,20,30], "gxyz":[40,50,60], "ang":[1.1,2.2,3.3], "Tempwarn":1, "mpuwarn":0 }
|
解析传输数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| QByteArray bt=m_tcpSocket->readAll();
QJsonDocument document=QJsonDocument::fromJson(bt);
QJsonObject jsonObj = document.object(); double temp = jsonObj["TEMP"].toDouble(); QString tempstr = QString::number(temp); ui->Temperature->setText("温度:"+tempstr); QJsonArray axyzArray = jsonObj["axyz"].toArray(); int ax = axyzArray[0].toInt(); QString axstr = QString::number(ax); ui->ACCEL_X->setText("X:"+axstr); int ay = axyzArray[1].toInt(); QString aystr = QString::number(ay); ui->ACCEL_Y->setText("Y:"+aystr); int az = axyzArray[2].toInt(); QString azstr = QString::number(az); ui->ACCEL_Z->setText("Z:"+azstr); QJsonArray gxyzArray = jsonObj["gxyz"].toArray();
int gx = gxyzArray[0].toInt(); QString qxstr = QString::number(gx); ui->GYRO_X->setText("X:"+qxstr); int gy = gxyzArray[1].toInt(); QString qystr = QString::number(gy); ui->GYRO_Y->setText("Y:"+qystr); int gz = gxyzArray[2].toInt(); QString gzstr = QString::number(gz); ui->GYRO_Z->setText("Z:"+gzstr);
QJsonArray angArray = jsonObj["ang"].toArray();
double ang1 = angArray[0].toDouble(); QString ang1str = QString::number(ang1); ui->ANG_X->setText("X:"+ang1str); double ang2 = angArray[1].toDouble(); QString ang2str = QString::number(ang2); ui->ANG_Y->setText("Y:"+ang2str); double ang3 = angArray[2].toDouble(); QString ang3str = QString::number(ang3); ui->ANG_Z->setText("Z:"+ang3str);
int tempWarn = jsonObj["Tempwarn"].toInt();
int mpuWarn = jsonObj["mpuwarn"].toDouble();
|
数据写入:
1 2 3 4 5 6 7 8 9 10 11
| QString json_str(bt);
QFile file("test.json"); if (!file.open(QIODevice::Append | QIODevice::Text)) { qDebug() << "file error!"; } QTextStream in(&file); in << json_str; file.close();
|