~本次添加了的功能:

将从下位机接受到的数据以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();