smart-greenhouse/historydata.cpp
2022-01-20 16:13:58 +08:00

189 lines
5.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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()
{
QByteArray 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);
}