#include "subform.h" #include #include #include #include #include "Qss.h" #include "libmodbus/modbus.h" #include #include #include #if defined(_MSC_VER) && (_MSC_VER >= 1600) # pragma execution_character_set("utf-8") #endif SubForm::SubForm(QString addr,int baurate,int device_addr) :ui(new Ui::Form) { ui->setupUi(this); init_charts(); QTimer *pTimer = new QTimer(this); QString *com = new QString(addr); qDebug()<<*com; mModel = new QStandardItemModel(this); mModel->setHorizontalHeaderLabels(QStringList() << "寄存器地址" << "返回值"<<"读取时间"); ui->tableView->setModel(mModel); mConfig = new Config; mConfig->addr = device_addr; mConfig->com = *com; connect(pTimer,&QTimer::timeout,[=](){ static float sd = 0; if(gAsyncData == nullptr) return; CapData *z = new CapData; int ret = gAsyncData->TakeLast(device_addr,&z); if(ret == 0){ mSeries1->append(sd,z->val1); pTime.append(QDateTime::currentDateTime().toString("yyyyMMdd-hh:mm:ss")); mModel->clear(); mModel->setHorizontalHeaderLabels(QStringList() << "寄存器地址" << "返回值"<<"读取时间"); QStandardItem *item = new QStandardItem(QString("%1").arg(z->val1)); mModel->setItem(0, 1, item); QStandardItem *item1 = new QStandardItem(QString("%1").arg(z->addr)); mModel->setItem(0, 0, item1); sd ++; if(sd > mMaxX){ mMaxX += 1024; mAxisX->setMax(mMaxX); } } }); pTimer->start(100); qDebug()<lineEdit_2->setText(addr); gAsyncData->AddConfig(this->mConfig); } void SubForm::on_pushButton_clicked() { auto mGifFile = QFileDialog::getSaveFileName(this, "", QString("%1-%2.csv").arg(ui->lineEdit_2->text()) .arg(QDateTime::currentDateTime().toString("yyyyMMdd-hhmmss"))); if(mGifFile != ""){ //.csv QFile file(mGifFile); if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug()<<"Cannot open file for writing"; return; } QTextStream out(&file); // out << tr("x,") << tr("error,") << tr("speed,")<< tr("temperature,")<< tr("input volate,")<legend()->hide(); // mChart->addSeries(mSeries1); // mAxisX->setMin(0); //Y围 mAxisX->setMax(1024); mMaxX = 1024; mAxisX->setTickCount(17); mAxisX->setLabelFormat("%d"); mAxisX->setTitleText("point"); //X mAxisX->setLineVisible(true); mAxisX->setGridLinePen(QPen(Qt::white,0.1,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); mAxisX->setLinePen(QPen(Qt::yellow,1,Qt::SolidLine,Qt::FlatCap,Qt::RoundJoin)); mAxisX->setLabelsFont(QFont("",8,18,false)); mAxisX->setLabelsBrush(QBrush(QColor(Qt::white), Qt::SolidPattern)); mAxisX->setLabelsColor(QColor(Qt::white)); mAxisY->setMin(-10); //Y围 mAxisY->setMax(100); mAxisY->setTickCount(11); mAxisY->setLabelFormat("%d"); mAxisY->setLinePenColor(QColor(Qt::yellow)); // mAxisY->setGridLineColor(QColor(Qt::yellow)); mAxisY->setGridLinePen(QPen(Qt::white,0.1,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); mAxisY->setGridLineVisible(true); mAxisY->setLinePen(QPen(Qt::yellow,1,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); mAxisY->setLabelsFont(QFont("",8,18,false)); mAxisY->setLabelsBrush(QBrush(QColor(Qt::white), Qt::SolidPattern)); mAxisY->setLabelsColor(QColor(Qt::white)); mAxisY->setTitleFont(QFont("",13,20,false)); mAxisY->setTitleBrush(QBrush(QColor(Qt::white), Qt::SolidPattern)); mAxisY->setTitleText("temperature (掳C)"); mAxisY2->setMin(0); //Y围 mAxisY2->setMax(100); mAxisY2->setTickCount(11); mAxisY2->setLabelFormat("%d"); mAxisY2->setLinePenColor(QColor(Qt::yellow)); // mAxisY2->setGridLineColor(QColor(Qt::yellow)); mAxisY2->setGridLinePen(QPen(Qt::white,0.1,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); mAxisY2->setGridLineVisible(true); mAxisY2->setLinePen(QPen(Qt::yellow,1,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); mAxisY2->setLabelsFont(QFont("",8,18,false)); mAxisY2->setLabelsBrush(QBrush(QColor(Qt::white), Qt::SolidPattern)); mAxisY2->setLabelsColor(QColor(Qt::white)); mAxisY2->setTitleFont(QFont("",13,20,false)); mAxisY2->setTitleBrush(QBrush(QColor(Qt::white), Qt::SolidPattern)); mAxisY2->setTitleText("wet %"); mChart->addAxis(mAxisX,Qt::AlignBottom); //位mChart械位 mChart->addAxis(mAxisY,Qt::AlignLeft); mChart->addAxis(mAxisY2,Qt::AlignRight); mChart->setBackgroundVisible(false); mSeries1->attachAxis(mAxisX); // mSeries1->attachAxis(mAxisY); //mChart mChart->setMargins(QMargins(0,0,0,0)); ui->graphicsView->setChart(mChart); ui->graphicsView->setRenderHint(QPainter::TextAntialiasing); // ui->graphicsView->setBackgroundBrush(QBrush(QColor(Qt::black),Qt::SolidPattern)); ui->graphicsView->scene()->setBackgroundBrush(QBrush(QColor(Qt::black),Qt::SolidPattern)); ui->graphicsView->setRubberBand(QChartView::VerticalRubberBand); mChart->legend()->setAlignment(Qt::AlignBottom);// mChart->legend()->setContentsMargins(10,10,10,10);//left,top,right,bottom mChart->legend()->setVisible(true);// QFont font = mChart->legend()->font(); font.setItalic(!font.italic()); mChart->legend()->setFont(font);//斜 font.setPointSizeF(12); mChart->legend()->setFont(font);//小 mChart->legend()->setFont(QFont(""));// mChart->legend()->setLabelColor(Qt::white); // } void SubForm::on_pushButton_2_clicked(bool checked) { } void SubForm::on_pushButton_2_clicked() { for(int i = 0;i < mConfig->req.length();i++){ if(ui->lineEdit->text().toInt() == mConfig->req[i].addr){ return; } } mConfig->req.append(Req{ ui->lineEdit->text().toUShort(), ui->lineEdit_3->text().toUShort(), }); }