190 lines
5.5 KiB
Plaintext
190 lines
5.5 KiB
Plaintext
#include "historydata.h"
|
||
#include "ui_historydata.h"
|
||
|
||
#include <QMessageBox>
|
||
#include <QPen>
|
||
|
||
historyData::historyData(QWidget *parent) :
|
||
QWidget(parent),
|
||
ui(new Ui::historyData)
|
||
{
|
||
ui->setupUi(this);
|
||
|
||
//设置窗口标题
|
||
this->setWindowTitle("历史数据");
|
||
this->setFixedSize(this->width(), this->height());
|
||
|
||
//实例化
|
||
chart = new QChart;
|
||
chart->setAnimationOptions(QChart::SeriesAnimations); //在缩放窗口大小时可以用动画进行美化
|
||
TemSeries = new QLineSeries();
|
||
HumSeries = new QLineSeries();
|
||
LightSeries = new QLineSeries();
|
||
SmokeSeries = new QLineSeries();
|
||
paintXY();
|
||
|
||
//创建套接字,和A9服务器取得连接
|
||
historyDataSocket = new QTcpSocket(this);
|
||
historyDataSocket->connectToHost("192.168.200.105", 7777);
|
||
|
||
connect(historyDataSocket, SIGNAL(readyRead()), this, SLOT(recvA9ServerSlot()));
|
||
}
|
||
|
||
historyData::~historyData()
|
||
{
|
||
delete ui;
|
||
historyDataSocket->close();
|
||
historyDataSocket = NULL;
|
||
}
|
||
|
||
void historyData::on_historyDataReturnBrn_clicked()
|
||
{
|
||
TemSeries->clear();
|
||
HumSeries->clear();
|
||
LightSeries->clear();
|
||
SmokeSeries->clear();
|
||
emit historyDataToWidgetSignal();
|
||
}
|
||
|
||
void historyData::on_searchHistoryDataBtn_clicked()
|
||
{
|
||
QString command = {"searchHistoryData"};
|
||
QByteArray arr;
|
||
arr.clear();
|
||
arr.append(command);
|
||
if(this->historyDataSocket->write(arr) == -1)
|
||
{
|
||
int ret = QMessageBox::question(this, "提交命令失败", "你提交的命令并没有上传到服务器!!!", QMessageBox::Yes);
|
||
}
|
||
else
|
||
{
|
||
int ret = QMessageBox::question(this, "提交成功", "恭喜你成功提交数据到服务器!!!", QMessageBox::Yes);
|
||
}
|
||
|
||
//清空坐标里的内容
|
||
TemSeries->clear();
|
||
HumSeries->clear();
|
||
LightSeries->clear();
|
||
SmokeSeries->clear();
|
||
|
||
paintTemSeries();
|
||
paintHumSeries();
|
||
paintLightSeries();
|
||
paintSmokeSeries();
|
||
|
||
}
|
||
|
||
void historyData::recvA9ServerSlot()
|
||
{
|
||
QString recvServer = historyDataSocket->readAll();
|
||
qDebug() << "history recv " << recvServer;
|
||
|
||
}
|
||
|
||
//画坐标轴
|
||
void historyData::paintXY()
|
||
{
|
||
axisX = new QValueAxis;
|
||
//设置坐标轴的格式
|
||
|
||
axisX->setRange(0,12); //设置范围
|
||
axisX->setLabelFormat("%d"); //设置刻度的格式
|
||
axisX->setGridLineVisible(true); //网格线可见
|
||
axisX->setTickCount(12); //设置多少格
|
||
axisX->setMinorTickCount(5); //设置每格小刻度线的数目
|
||
chart->addAxis(axisX, Qt::AlignBottom); //为chart设置x轴,并把轴附加到线上
|
||
|
||
axisY = new QValueAxis;
|
||
axisY->setRange(0,100); //设置范围
|
||
axisY->setLabelFormat("%d"); //设置刻度的格式
|
||
axisY->setGridLineVisible(true); //网格线可见
|
||
axisY->setTickCount(11); //设置多少格
|
||
axisY->setMinorTickCount(5); //设置每格小刻度线的数目
|
||
chart->addAxis(axisY, Qt::AlignLeft); //为chart设置y轴,并把轴附加到线上
|
||
|
||
//用Qchart在QChartView上面
|
||
ui->canvas->setChart(chart);
|
||
ui->canvas->setRenderHint(QPainter::Antialiasing); //抗锯齿
|
||
}
|
||
|
||
//画温度的折线统计图
|
||
void historyData::paintTemSeries()
|
||
{
|
||
//设置一个pen给线
|
||
QPen TemPen;
|
||
TemPen.setWidth(2);
|
||
TemPen.setColor(Qt::red);
|
||
|
||
//把笔交给线
|
||
TemSeries->setPen(TemPen);
|
||
TemSeries->setName("温度");
|
||
|
||
*TemSeries << QPointF(0,24) << QPointF(1,23) << QPointF(2,25) << QPointF(3,27) << QPointF(4,29)<< QPointF(5,29) << QPointF(6,30) << QPointF(7,32) << QPointF(8,35)<< QPointF(9,37) << QPointF(10,35) << QPointF(11,33) << QPointF(12,30);
|
||
chart->addSeries(TemSeries);
|
||
|
||
//把线绑定到坐标轴上
|
||
TemSeries->attachAxis(axisX);
|
||
TemSeries->attachAxis(axisY);
|
||
}
|
||
|
||
//画湿度的折线统计图
|
||
void historyData::paintHumSeries()
|
||
{
|
||
//设置一个pen给线
|
||
QPen HumPen;
|
||
HumPen.setWidth(2);
|
||
HumPen.setColor(Qt::yellow);
|
||
|
||
//把笔交给线
|
||
HumSeries->setPen(HumPen);
|
||
HumSeries->setName("湿度");
|
||
|
||
*HumSeries << QPointF(0,65) << QPointF(1,67) << QPointF(2,64) << QPointF(3,64) << QPointF(4,62)<< QPointF(5,60) << QPointF(6,58) << QPointF(7,57) << QPointF(8,57)<< QPointF(9,55) << QPointF(10,56) << QPointF(11,58) << QPointF(12,62);
|
||
chart->addSeries(HumSeries);
|
||
|
||
//把线绑定到坐标轴上
|
||
HumSeries->attachAxis(axisX);
|
||
HumSeries->attachAxis(axisY);
|
||
}
|
||
|
||
//画光照强度的折线统计图
|
||
void historyData::paintLightSeries()
|
||
{
|
||
//设置一个pen给线
|
||
QPen LightPen;
|
||
LightPen.setWidth(2);
|
||
LightPen.setColor(Qt::green);
|
||
|
||
//把笔交给线
|
||
LightSeries->setPen(LightPen);
|
||
LightSeries->setName("光照强度");
|
||
|
||
*LightSeries << QPointF(0,48) << QPointF(1,53) << QPointF(2,52) << QPointF(3,51) << QPointF(4,53)<< QPointF(5,50) << QPointF(6,55) << QPointF(7,60) << QPointF(8,68)<< QPointF(9,69) << QPointF(10,75) << QPointF(11,62) << QPointF(12,55);
|
||
chart->addSeries(LightSeries);
|
||
|
||
//把线绑定到坐标轴上
|
||
LightSeries->attachAxis(axisX);
|
||
LightSeries->attachAxis(axisY);
|
||
}
|
||
|
||
//画烟雾浓度的折线统计图
|
||
void historyData::paintSmokeSeries()
|
||
{
|
||
//设置一个pen给线
|
||
QPen SmokePen;
|
||
SmokePen.setWidth(2);
|
||
SmokePen.setColor(Qt::blue);
|
||
|
||
//把笔交给线
|
||
SmokeSeries->setPen(SmokePen);
|
||
SmokeSeries->setName("烟雾浓度");
|
||
|
||
*SmokeSeries << QPointF(0,10) << QPointF(3,10) << QPointF(7,10) << QPointF(9,10) << QPointF(12,10);
|
||
chart->addSeries(SmokeSeries);
|
||
|
||
//把线绑定到坐标轴上
|
||
SmokeSeries->attachAxis(axisX);
|
||
SmokeSeries->attachAxis(axisY);
|
||
|
||
}
|