diff --git a/Src/HomePage/deviceStateDlg.cpp b/Src/HomePage/deviceStateDlg.cpp index f11cf03..edf6d3e 100644 --- a/Src/HomePage/deviceStateDlg.cpp +++ b/Src/HomePage/deviceStateDlg.cpp @@ -241,51 +241,25 @@ void deviceStateDlg::startNetDetn() { m_workerThread[i] = new QThread(); m_networkDetection[i]->moveToThread(m_workerThread[i]); m_workerThread[i]->start(); - connect(m_networkDetection[i], SIGNAL(resultReady(int, QString, QString)), this, - SLOT(receiveResult(int, QString, QString))); // 接收线程运行结果 - connect(this, &deviceStateDlg::stopThread, m_networkDetection[i], - &networkDetection::stop); // 结束线程 + connect(m_networkDetection[i], SIGNAL(resultReady(int,QString,QString)), this, + SLOT(receiveResult(int,QString,QString))); // 接收线程运行结果 connect(this, &deviceStateDlg::startThread, m_networkDetection[i], &networkDetection::dowork); // 开始线程 - emit startThread(i, cmdlist[i]); // 启用线程信号 - // switch (i) { - // case 0: - // connect(this, &deviceStateDlg::startThread0, m_networkDetection[i], - // &networkDetection::dowork); // 光电吊舱 线程开始处理数据 - // emit startThread0(i, cmdlist[i]); // 启用线程信号 - // break; - // case 1: - // connect(this, &deviceStateDlg::startThread1, m_networkDetection[i], - // &networkDetection::dowork); // L链路 线程开始处理数据 - // emit startThread1(i, cmdlist[i]); // 启用线程信号 - // break; - // case 2: - // connect(this, &deviceStateDlg::startThread2, m_networkDetection[i], - // &networkDetection::dowork); // 自组网 线程开始处理数据 - // emit startThread2(i, cmdlist[i]); // 启用线程信号 - // break; - // case 3: - // connect(this, &deviceStateDlg::startThread3, m_networkDetection[i], - // &networkDetection::dowork); // ku卫通 线程开始处理数据 - // emit startThread3(i, cmdlist[i]); // 启用线程信号 - // break; - // case 4: - // connect(this, &deviceStateDlg::startThread4, m_networkDetection[i], - // &networkDetection::dowork); // 线程开始处理数据 - // emit startThread4(i, cmdlist[i]); // 启用线程信号 - // break; - // default: - // break; - // } + connect(this, &deviceStateDlg::stopMyThread, m_networkDetection[i], + &networkDetection::stopwork); // 结束线程 + emit startThread(i, cmdlist[i]); // 启用线程信号 + qDebug("网络监测线程启动,线程id:%d",i); } } // 停止网络监测 void deviceStateDlg::stopNetDetn() { for (int i = 0; i < deviceNum; ++i) { - m_networkDetection[i]->stop(i); // 线程退出循环 + m_networkDetection[i]->stopwork(i); + //emit stopMyThread(i);//信号不起作用 m_workerThread[i]->quit(); // 退出线程请求 m_workerThread[i]->wait(); // 使线程正常退出。 + qDebug("网络监测线程结束,线程id:%d",i); m_workerThread[i]->deleteLater(); m_workerThread[i] = nullptr; m_networkDetection[i]->deleteLater(); diff --git a/Src/HomePage/deviceStateDlg.h b/Src/HomePage/deviceStateDlg.h index 4d663bc..99eb15a 100644 --- a/Src/HomePage/deviceStateDlg.h +++ b/Src/HomePage/deviceStateDlg.h @@ -23,12 +23,10 @@ public: signals: void switchToDevicePage(int id); // 发送切换到设备页信号 // QVector startThread(int, QStringList); - void startThread(int, QStringList); // 启动线程 - void startThread1(int, QStringList); // 启动线程 - void startThread2(int, QStringList); // 启动线程 - void startThread3(int, QStringList); // 启动线程 - void startThread4(int, QStringList); // 启动线程 - void stopThread(int); // 结束线程 + void startThread(int, QStringList); // 启动线程 +signals: + void stopMyThread(int); // 结束线程 + private slots: void on_pushButton_homePage_GDDC_clicked(); diff --git a/Src/HomePage/homepagedlg.cpp b/Src/HomePage/homepagedlg.cpp index 51030b2..524332e 100644 --- a/Src/HomePage/homepagedlg.cpp +++ b/Src/HomePage/homepagedlg.cpp @@ -50,6 +50,8 @@ void HomePageDlg::initButton() { settingWidget->close(); else settingWidget->show(); + + emit m_deviceStateDlg->stopMyThread(1); }); // 设置页面设置ip后,更新网络检测页面ip diff --git a/Src/HomePage/networkDetection.cpp b/Src/HomePage/networkDetection.cpp index d5bc98d..3144184 100644 --- a/Src/HomePage/networkDetection.cpp +++ b/Src/HomePage/networkDetection.cpp @@ -6,13 +6,6 @@ networkDetection::networkDetection(QObject *parent,int id) : QObject(parent),m_i CmdListChanged = false; m_process = new QProcess(this); } -// networkDetection::networkDetection(int id) -// { -// flagRun = true; -// CmdListChanged = false; -// m_process = new QProcess(this); -// m_id = id; -// } networkDetection::~networkDetection() { delete m_process; } void networkDetection::dowork(int id, QStringList cmdlist) { @@ -47,11 +40,11 @@ void networkDetection::dowork(int id, QStringList cmdlist) { emit resultReady(m_id, "离线","通信异常"); } - QThread::sleep(2); // 加sleep降低CPU占用率 + //QThread::sleep(0.001); // 加sleep降低CPU占用率 } } -void networkDetection::stop(int id) { +void networkDetection::stopwork(int id) { if(id == m_id){ flagRun = false; } diff --git a/Src/HomePage/networkDetection.h b/Src/HomePage/networkDetection.h index f410920..1572d21 100644 --- a/Src/HomePage/networkDetection.h +++ b/Src/HomePage/networkDetection.h @@ -16,7 +16,7 @@ public: public slots: void dowork(int, QStringList); - void stop(int); + void stopwork(int); signals: void resultReady(int, QString, QString); diff --git a/mainwindow.cpp b/mainwindow.cpp index 50a7f70..6417ec9 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -40,7 +40,7 @@ MainWindow::~MainWindow() { delete m_SDFPDlg; delete m_GDDCdlg; delete m_HomePagedlg; - delete processPDT; + //delete processPDT; // delete mWeb; delete lLinkWeb; delete adHocNetworkWeb;