no message

master
zcy 2023-10-01 17:15:57 +08:00
parent 5eeda7ab66
commit e0f929fab3
5 changed files with 61 additions and 44 deletions

View File

@ -39,7 +39,7 @@ public:
} }
~ASyncReadData(){ ~ASyncReadData(){
if(mMod) if(mMod)
modbus_close(mMod); modbus_close(mMod);
} }
void Stop(){ void Stop(){
mRuning = false; mRuning = false;
@ -49,27 +49,30 @@ public:
} }
void AddConfig(Config *c){ void AddConfig(Config *c){
if(nullptr != c){ if(nullptr != c){
mMux.lock();
for(auto itr = mConf.begin();itr != mConf.end(); for(auto itr = mConf.begin();itr != mConf.end();
itr++){ itr++){
if (c == *itr){ if (c == *itr){
mMux.unlock();
return; return;
} }
} }
this->mConf.append(c); this->mConf.append(c);
mMux.unlock();
} }
} }
void Run(void *v) override{ void Run(void *v) override{
// 读取1 // 读取1
float x = 0; float x = 0;
while(mRuning){ while(mRuning){
int count = 0;
int it = 0; for(int it = 0;it < mConf.size();it++) {
for(;it < mConf.size();
it++){
auto itr = mConf.at(it); auto itr = mConf.at(it);
uint16_t dat[10] = {0}; uint16_t dat[10] = {0};
mMod = modbus_new_rtu(itr->com.toStdString().c_str(), mMod = modbus_new_rtu(itr->com.toStdString().c_str(),
57600, 'N', 8, 1); //相同的端口只能同时打开一个 57600, 'N', 8, 1); //相同的端口只能同时打开一个
modbus_set_debug(mMod,true); modbus_set_debug(mMod,true);
modbus_set_slave(mMod,itr->addr); //设置modbus从机地址 modbus_set_slave(mMod,itr->addr); //设置modbus从机地址
@ -79,32 +82,32 @@ public:
for(auto s = 0;s < itr->req.length();s++){ for(auto s = 0;s < itr->req.length();s++){
QThread::msleep(1000);
int ret = modbus_read_registers(mMod,itr->req[s].addr,itr->req[s].len,dat);
QThread::msleep(1000); mMux.lock();
int ret = modbus_read_registers(mMod,itr->req[s].addr,itr->req[s].len,dat); if(mListData.contains(itr->addr)){
mListData[itr->addr]->push_front(new CapData{
itr->addr,
float(float(dat[0])),
});
}else{
mListData[itr->addr] = new QList<CapData *>;
mListData[itr->addr]->push_front(new CapData{
itr->addr,
float(float(dat[0])),
});
}
x += 3.1415*2 /256;
mMux.unlock();
mMux.lock();
if(mListData.contains(itr->addr)){
mListData[itr->addr]->push_front(new CapData{
itr->addr,
float(float(dat[0])),
});
}else{
mListData[itr->addr] = new QList<CapData *>;
mListData[itr->addr]->push_front(new CapData{
itr->addr,
float(float(dat[0])),
});
} }
x += 3.1415*2 /256;
mMux.unlock();
}
modbus_close(mMod); modbus_close(mMod);
} }
QThread::msleep(1000*pcom->rate); qDebug()<<"keep alive";
} QThread::msleep(100);
}
// 读取2 // 读取2
} }

View File

@ -60,30 +60,28 @@ void MainWindow::on_pushButton_clicked()
void MainWindow::on_pushButton_3_clicked() void MainWindow::on_pushButton_3_clicked()
{ {
if(nullptr == gAsyncData){
gAsyncData = new ASyncReadData(this);
connect(gAsyncData,&QSSASyncProcess::Done,[&](){
qDebug()<<"done";
});
qDebug()<<"hello world";
gAsyncData->Start(nullptr);
}
if(this->mForms.contains(ui->lineEdit_2->text())){ if(this->mForms.contains(ui->lineEdit_2->text())){
QMessageBox::warning(this,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>","<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>"); QMessageBox::warning(this,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>","<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>");
return; return;
} }
SubForm *p1 = new SubForm(ui->lineEdit_2->text(), SubForm *p1 = new SubForm(ui->comboBox_2->currentText(),
ui->comboBox->currentText().toInt(), ui->comboBox->currentText().toInt(),
ui->lineEdit_2->text().toInt()); ui->lineEdit_2->text().toInt());
qDebug()<<ui->lineEdit_2->text(); qDebug()<<ui->lineEdit_2->text();
ui->tabWidget->addTab((QWidget*)p1,"<EFBFBD><EFBFBD><EFBFBD>ַ:" + ui->lineEdit_2->text()); ui->tabWidget->addTab((QWidget*)p1,"address:" + ui->lineEdit_2->text());
this->mForms[ui->lineEdit_2->text()] = p1; this->mForms[ui->lineEdit_2->text()] = p1;
if(nullptr == gAsyncData){
gAsyncData = new ASyncReadData(this);
connect(gAsyncData,&QSSASyncProcess::Done,[&](){
qDebug()<<"done";
});
}
// gAsyncData->AddConfig(new Config{
// QString(ui->comboBox_2->currentText()),
// ui->lineEdit_2->text().toInt(),
// ui->lineEdit_3->text().toInt(),
// });
} }

13
mainwindow.cpp.rej Normal file
View File

@ -0,0 +1,13 @@
diff a/mainwindow.cpp b/mainwindow.cpp (rejected hunks)
@@ -79,6 +79,11 @@
}
+// gAsyncData->AddConfig(new Config{
+// QString(ui->comboBox_2->currentText()),
+// ui->lineEdit_2->text().toInt(),
+// ui->lineEdit_3->text().toInt(),
+// });
}

View File

@ -54,6 +54,7 @@
<widget class="QComboBox" name="comboBox_2"> <widget class="QComboBox" name="comboBox_2">
<property name="font"> <property name="font">
<font> <font>
<family>Arial</family>
<pointsize>12</pointsize> <pointsize>12</pointsize>
</font> </font>
</property> </property>

View File

@ -27,13 +27,17 @@ SubForm::SubForm(QString addr,int baurate,int device_addr)
mModel->setHorizontalHeaderLabels(QStringList() << "寄存器地址" << "返回值"<<"读取时间"); mModel->setHorizontalHeaderLabels(QStringList() << "寄存器地址" << "返回值"<<"读取时间");
ui->tableView->setModel(mModel); ui->tableView->setModel(mModel);
mConfig = new Config;
mConfig->addr = device_addr;
mConfig->com = *com;
connect(pTimer,&QTimer::timeout,[=](){ connect(pTimer,&QTimer::timeout,[=](){
static float sd = 0; static float sd = 0;
if(gAsyncData == nullptr) if(gAsyncData == nullptr)
return; return;
CapData *z = new CapData; CapData *z = new CapData;
int ret = gAsyncData->TakeLast((*com).toInt(),&z); int ret = gAsyncData->TakeLast(device_addr,&z);
if(ret == 0){ if(ret == 0){
mSeries1->append(sd,z->val1); mSeries1->append(sd,z->val1);
@ -60,10 +64,8 @@ SubForm::SubForm(QString addr,int baurate,int device_addr)
pTimer->start(100); pTimer->start(100);
qDebug()<<QDateTime::currentDateTime().toString(); qDebug()<<QDateTime::currentDateTime().toString();
ui->lineEdit_2->setText(addr); ui->lineEdit_2->setText(addr);
gAsyncData->AddConfig(this->mConfig);
mConfig = new Config;
mConfig->addr = device_addr;
mConfig->com = *com;
} }
void SubForm::on_pushButton_clicked() { void SubForm::on_pushButton_clicked() {