From 8d7c5d69462c74f5bc8a6655e0306dab1e58dd00 Mon Sep 17 00:00:00 2001 From: zcy <290198252@qq.com> Date: Wed, 4 Oct 2023 23:48:12 +0800 Subject: [PATCH] no message --- global.h | 32 +++++++++++++++++++++----------- mainwindow.ui | 2 +- subform.cpp | 24 ++++++++++++++++++++---- subform.h | 1 + untitled.pro.user | 5 ++++- 5 files changed, 47 insertions(+), 17 deletions(-) diff --git a/global.h b/global.h index 49f04fd..048ca3d 100644 --- a/global.h +++ b/global.h @@ -79,20 +79,25 @@ public: while(mRuning){ int count = 0; + for(int it = 0;it < mConf.size();it++) { auto itr = mConf.at(it); uint16_t dat[10] = {0}; - mMod = modbus_new_rtu(itr->com.toStdString().c_str(), - itr->baurate, 'N', 8, 1); //相同的端口只能同时打开一个 - modbus_set_debug(mMod,true); - modbus_set_slave(mMod,itr->addr); //设置modbus从机地址 - modbus_connect(mMod); - modbus_set_response_timeout(mMod,1,1000); - QThread::msleep(300); + if(mMod == nullptr){ + mMod = modbus_new_rtu(itr->com.toStdString().c_str(), + itr->baurate, 'N', 8, 1); //相同的端口只能同时打开一个 + + modbus_set_debug(mMod,true); + modbus_set_slave(mMod,itr->addr); //设置modbus从机地址 + modbus_connect(mMod); + modbus_set_response_timeout(mMod,3,0); + } + + for(auto s = 0;s < itr->req.length();s++){ - QThread::msleep(itr->rate*1000); + QThread::msleep(itr->rate); int ret = modbus_read_registers(mMod,itr->req[s].addr,itr->req[s].len,dat); mMux.lock(); @@ -104,11 +109,14 @@ public: log = QDateTime::currentDateTime().toString("yyyy-mm-dd hh:MM:ss ") + "接收数据:"; + for(int i =0;i < resp_length;i++){ log += QString::asprintf("0x%02x ",rsp[i]); } + if(ret < 0){ + log += "超时"; + } emit(Info(log)); -// req_length; bool succ = true; if(mListData.contains(itr->addr)){ @@ -139,11 +147,13 @@ public: } mMux.unlock(); } - modbus_close(mMod); } qDebug()<<"keep alive"; QThread::msleep(100); + } + modbus_close(mMod); + // 读取2 } @@ -164,7 +174,7 @@ public: } QMap*> mListData; QMutex mMux; - modbus_t* mMod; + modbus_t* mMod = nullptr; bool mRuning; QList mConf; }; diff --git a/mainwindow.ui b/mainwindow.ui index 5955689..51f4125 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -92,7 +92,7 @@ - 采样间隔(秒): + 采样间隔(毫秒): diff --git a/subform.cpp b/subform.cpp index 9e99255..78f0003 100644 --- a/subform.cpp +++ b/subform.cpp @@ -44,12 +44,20 @@ SubForm::SubForm(QString addr,int baurate,int device_addr,int rate) if(ret == 0){ bool succ = z->succ; if(this->mLines.find(z->addr) != mLines.end()){ - mLines[z->addr]->append(mLines.count() + 1,z->val1[0]); + static int i = 0; + qDebug()<< mLines[z->addr]->count()<<"fsdf"; + mLines[z->addr]->append( (mCapMax + 1),float(z->val1[0])); + + mCapMax++; + }else{ mLines[z->addr] = new QLineSeries; mChart->addSeries(mLines[z->addr]); // mLines[z->addr]->attachAxis(mAxisX); // mLines[z->addr]->attachAxis(mAxisY); + mLines[z->addr]->append( (mCapMax + 1),float(z->val1[0])); + mLines[z->addr]->setName(QString::asprintf("%d",z->addr)); + mCapMax++; } // mSeries1->append(sd,z->val1); pTime.append(QDateTime::currentDateTime().toString("yyyyMMdd-hh:mm:ss")); @@ -85,6 +93,15 @@ SubForm::SubForm(QString addr,int baurate,int device_addr,int rate) QPushButton *button = new QPushButton(this); ui->tableView->setIndexWidget(mModel->index(i,3),button); button->setText("ͼ"); + connect(button,&QPushButton::clicked,[=](){ + qDebug()<item(i,0)->data(Qt::DisplayRole).toInt(); + if(this->mLines[mModel->item(i,0)->data(Qt::DisplayRole).toInt()]->isVisible()){ + this->mLines[mModel->item(i,0)->data(Qt::DisplayRole).toInt()]->hide(); + }else{ + this->mLines[mModel->item(i,0)->data(Qt::DisplayRole).toInt()]->show(); + } + }); + }else{ mModel->item(found->row(),0)->setData(QString("%1").arg(z->addr),Qt::DisplayRole); @@ -105,7 +122,7 @@ SubForm::SubForm(QString addr,int baurate,int device_addr,int rate) delete z; } }); - pTimer->start(100); + pTimer->start(10); qDebug()<lineEdit_2->setText(addr); gAsyncData->AddConfig(this->mConfig); @@ -132,7 +149,7 @@ void SubForm::on_pushButton_clicked() { out << tr("x,") << tr("error,") << tr("speed,")<< tr("temperature,")<< tr("input volate,")<legend()->setFont(font);//б font.setPointSizeF(12); mChart->legend()->setFont(font);//С - mChart->legend()->setFont(QFont(""));// mChart->legend()->setLabelColor(Qt::white); // } diff --git a/subform.h b/subform.h index 7e9fd78..7cfe668 100644 --- a/subform.h +++ b/subform.h @@ -63,6 +63,7 @@ private: QDateTime mStartTime; bool mStart; QStandardItemModel *mModel; + int mCapMax = 0; }; diff --git a/untitled.pro.user b/untitled.pro.user index d5f5a22..8ddea8e 100644 --- a/untitled.pro.user +++ b/untitled.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -80,6 +80,9 @@ true + + true +