From ba355953cb644ddd0e3269255d0c47b746915807 Mon Sep 17 00:00:00 2001 From: bobpan Date: Thu, 30 Sep 2021 11:38:51 +0800 Subject: [PATCH] =?UTF-8?q?valueMain=E5=B7=A5=E7=A8=8B=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=A4=87=E6=B3=A8=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...傝瘑鍒畾浣嶄竴浣撲笌PLC閫氳鍗忚.docx | Bin 12637 -> 12931 bytes tpvs17/tpMain/QPLCDevice.h | 2 +- tpvs17/valueMainUI/lpConfig.cpp | 1 + tpvs17/valueMainUI/lpConfig.h | 10 +- tpvs17/valueMainUI/valueMainUI.cpp | 109 ++++++++---------- tpvs17/valueMainUI/valueMainUI.vcxproj | 9 +- .../valueMainUI/valueMainUI.vcxproj.filters | 6 - 7 files changed, 58 insertions(+), 79 deletions(-) diff --git a/doc/杞瘋璇嗗埆瀹氫綅涓浣撲笌PLC閫氳鍗忚.docx b/doc/杞瘋璇嗗埆瀹氫綅涓浣撲笌PLC閫氳鍗忚.docx index 965bffa2db354d6fbdf62a08118f361afe8112d1..635f24cfae28a461e2c73d66ca64971e63341fce 100644 GIT binary patch delta 7426 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 diff --git a/tpvs17/tpMain/QPLCDevice.h b/tpvs17/tpMain/QPLCDevice.h index 05f06a3..21cae87 100644 --- a/tpvs17/tpMain/QPLCDevice.h +++ b/tpvs17/tpMain/QPLCDevice.h @@ -6,6 +6,7 @@ #include #include "lpThread.h" #include "Result2Ui.h" +/*与PLC设备通讯类*/ class QPLCDevice : public QObject { Q_OBJECT @@ -36,7 +37,6 @@ signals: void sgRecvDataCallBack(QByteArray); private: lptkRawTcpServer *m_rawTcpServer{ nullptr }; -private: QMutex mMtLock; QByteArray m_recvData; lpThread *m_pTask{ nullptr }; diff --git a/tpvs17/valueMainUI/lpConfig.cpp b/tpvs17/valueMainUI/lpConfig.cpp index 44a6ca6..bdad682 100644 --- a/tpvs17/valueMainUI/lpConfig.cpp +++ b/tpvs17/valueMainUI/lpConfig.cpp @@ -1,5 +1,6 @@ #include "lpConfig.h" #include +/*系统参数配置类 */ lpConfig::lpConfig() { diff --git a/tpvs17/valueMainUI/lpConfig.h b/tpvs17/valueMainUI/lpConfig.h index 6dde2a5..a27f2e2 100644 --- a/tpvs17/valueMainUI/lpConfig.h +++ b/tpvs17/valueMainUI/lpConfig.h @@ -14,12 +14,12 @@ public: void loadConfig(); public: - int portA{ 10110 };//A侧工位websocket 链接 - int portB{ 10112 }; - QString appPathA; - QString appPathB; + int portA{ 10110 };//A侧检测系统 tcp服务端口 用于本系统tcpclient主动连接和通讯 + int portB{ 10112 };//B侧检测系统 tcp服务端口 + QString appPathA;//A侧检测系统的路径 绝对路径 + QString appPathB;//B侧检测系统的路径 绝对路径 bool doubleStation{ true };//true 双工位 ; false 单工位 - int plcServerPort{ 1000 }; + int plcServerPort{ 1000 };//与PLC通讯 的tcp服务端口 }; #endif \ No newline at end of file diff --git a/tpvs17/valueMainUI/valueMainUI.cpp b/tpvs17/valueMainUI/valueMainUI.cpp index 981185e..d39c23e 100644 --- a/tpvs17/valueMainUI/valueMainUI.cpp +++ b/tpvs17/valueMainUI/valueMainUI.cpp @@ -17,12 +17,13 @@ valueMainUI::valueMainUI(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); - setupTrayIcon(); + setupTrayIcon();//鍚庡彴浠诲姟鏍忓垵濮嬪寲 setWindowIcon(QIcon(WINDOWICON)); setWindowTitle(tr("璇嗗埆瀹氫綅涓浣撴娴嬬郴缁")); lpGlobalData::instance(); + lpConfig::instance()->loadConfig(); - + //鐘舵佹爮淇℃伅灞曠ず鍒濆鍖 涓や釜鍚庡彴妫娴嬬▼搴忕殑閫氳鐘舵佸睍绀 m_pLabelA = new QLabel(this); m_pLabelB = new QLabel(this); m_pLabelPLC = new QLabel(this); @@ -51,48 +52,35 @@ valueMainUI::valueMainUI(QWidget *parent) ui.statusBar->addPermanentWidget(m_pLabelSystem, 50); m_pLabelA->setText(""); m_pLabelB->setText(""); + + //妫娴嬬粨鏋滃浘灞曠ず UI鍒濆鍖 { - QGridLayout *pLayout_A = new QGridLayout(ui.widget_A); + QGridLayout *pLayout_A = new QGridLayout(ui.widget_A);//A渚х浉鏈虹粨鏋滃浘灞曠ずUI m_ImgViewer_A = new RoiImgViewer(ui.widget_A); m_ImgViewer_A->setObjectName("m_ImgViewer_A"); connect(m_ImgViewer_A, SIGNAL(sgImageScale(qreal)), this, SLOT(onImageScale(qreal))); pLayout_A->addWidget(m_ImgViewer_A); ui.widget_A->setLayout(pLayout_A); - QGridLayout *pLayout_B = new QGridLayout(ui.widget_B); + QGridLayout *pLayout_B = new QGridLayout(ui.widget_B);//B渚х浉鏈虹粨鏋滃浘灞曠ずUI m_ImgViewer_B = new RoiImgViewer(ui.widget_A); m_ImgViewer_B->setObjectName("m_ImgViewer_B"); connect(m_ImgViewer_B, SIGNAL(sgImageScale(qreal)), this, SLOT(onImageScale(qreal))); pLayout_B->addWidget(m_ImgViewer_B); ui.widget_B->setLayout(pLayout_B); - QString strPath = QApplication::applicationDirPath() + "/showImg.ini"; + QString strPath = QApplication::applicationDirPath() + "/showImg.ini";//鍥惧儚灞曠ず姣斾緥鐨勫弬鏁 QSettings setting(strPath, QSettings::IniFormat); double nScale_A = setting.value("ShowImg/ScaleA", 0.53).toDouble(); double nScale_B = setting.value("ShowImg/ScaleB", 0.53).toDouble(); m_ImgViewer_A->setInitScale(nScale_A); m_ImgViewer_B->setInitScale(nScale_B); - -// QFont font; -// font.setBold(true); -// font.setPixelSize(25); -// m_pLabelState_A = new QLabel(m_ImgViewer_A); -// m_pLabelState_A->setFont(font); -// m_pLabelState_A->setText(tr("妫娴嬬姸鎬")); -// m_pLabelState_A->setMinimumWidth(300); -// -// m_pLabelRes_A = new QLabel(m_ImgViewer_A); -// m_pLabelRes_A->setFont(font); -// m_pLabelRes_A->setText(tr("妫娴嬬粨鏋")); -// m_pLabelRes_A->setMinimumWidth(300); -// m_pLabelRes_A->move(m_ImgViewer_A->rect().x(), 40); } - + //宸ュ叿鏍忚彍鍗 QMenu *pToolMenu = new QMenu(this); - - pToolMenu->addAction(ui.actionConfig); - pToolMenu->addAction(ui.actiondebug); - pToolMenu->addAction(ui.action_communicate); + pToolMenu->addAction(ui.actionConfig);//绯荤粺閰嶇疆 + pToolMenu->addAction(ui.actiondebug);//娴嬭瘯璋冭瘯 + pToolMenu->addAction(ui.action_communicate);//閫氳娴嬭瘯椤甸潰 QToolButton* pbutton = new QToolButton(this); pbutton->setMenu(pToolMenu); @@ -111,21 +99,16 @@ valueMainUI::valueMainUI(QWidget *parent) connect(ui.actionConfig, SIGNAL(triggered()), this, SLOT(onButtonClicked())); connect(ui.actiondebug, SIGNAL(triggered()), this, SLOT(onButtonClicked())); connect(ui.action_communicate, SIGNAL(triggered()), this, SLOT(onButtonClicked())); - - m_pConfigUI = new lpConfigUI(); + + //瀛愰〉闈㈠垵濮嬪寲 + m_pConfigUI = new lpConfigUI();//绯荤粺閰嶇疆 connect(m_pConfigUI, SIGNAL(sgUpdateConfig()), this, SLOT(onUpdateConfig())); - m_pDebugUI = new lpDebugUI(); + m_pDebugUI = new lpDebugUI();//璋冭瘯娴嬭瘯 connect(m_pDebugUI, SIGNAL(sgButtonClicked(int)), this, SLOT(onDebugClicked(int))); - m_SysTimerID = startTimer(1000); - lpConfig::instance()->loadConfig(); - - m_timerStartID = startTimer(2000); - + m_pTcpDebugUI = new QTCPDebugUI();//閫氳娴嬭瘯椤甸潰 onShowUI(lpConfig::instance()->doubleStation); - m_pTcpDebugUI = new QTCPDebugUI(); - - {//PLC tcp 閫氳 + {//PLC tcp 閫氳 鏈娴嬬郴缁熶綔涓烘湇鍔$锛孭LC浣滀负瀹㈡埛绔富鍔ㄨ繛鎺 m_pPlcDevice = new QPLCDevice(); m_pPlcDevice->onInitDevice(); m_pPlcDevice->onStartServer(lpConfig::instance()->plcServerPort); @@ -133,11 +116,17 @@ valueMainUI::valueMainUI(QWidget *parent) connect(m_pPlcDevice, SIGNAL(sgSendDataCallBack(QByteArray)), this, SLOT(onShowSendTcpData(QByteArray))); connect(m_pPlcDevice, SIGNAL(sgRecvDataCallBack(QByteArray)), this, SLOT(onShowRecvTcpData(QByteArray))); } + + { + m_SysTimerID = startTimer(1000);//绯荤粺瀹氭椂鍒锋柊瀹氭椂鍣 + m_timerStartID = startTimer(1000);//鍚姩浠庢満瀹㈡埛绔 + } } valueMainUI::~valueMainUI() { - onStopProcess(); + onStopProcess();//鏈郴缁熼鍑烘椂 鏉姝荤敱鏈郴缁熷惎鍔ㄧ殑A B妫娴嬬▼搴 + //鍐呭瓨閲婃斁 { if (m_ImgViewer_A) { @@ -383,7 +372,7 @@ Q_SLOT void valueMainUI::onRecvDataStr_B(const QJsonObject& json) } void valueMainUI::onConnectA() -{ +{//tcpClient 杩炴帴 TP_TCP_CLIENT_PARAM init_param; init_param.host_ip_ = "127.0.0.1"; init_param.port_ = lpConfig::instance()->portA; @@ -400,9 +389,9 @@ void valueMainUI::onConnectA() tcp_client_ptr_A = new lpTcpClient(init_param, this); } - connect(tcp_client_ptr_A, SIGNAL(signal_connected()), this, SLOT(on_connected_A())); + connect(tcp_client_ptr_A, SIGNAL(signal_connected()), this, SLOT(on_connected_A()));//杩炴帴鐘舵 connect(tcp_client_ptr_A, SIGNAL(signal_disconnected()), this, SLOT(on_disconnected_A())); - connect(tcp_client_ptr_A, &lpTcpClient::signal_message_receive, this, &valueMainUI::on_message_receive_A); + connect(tcp_client_ptr_A, &lpTcpClient::signal_message_receive, this, &valueMainUI::on_message_receive_A);//鏁版嵁鎺ユ敹 connect(tcp_client_ptr_A, &lpTcpClient::signal_data_send_completed, this, &valueMainUI::on_data_send_completed_A); connect(tcp_client_ptr_A, &lpTcpClient::signal_data_recv_completed, this, &valueMainUI::on_data_recv_completed_A); @@ -439,7 +428,7 @@ void valueMainUI::onConnectB() Q_SLOT void valueMainUI::onButtonClicked() { QString strObj = sender()->objectName(); - if (strObj == "actionsettingA") + if (strObj == "actionsettingA")//A渚у鎴风灞曠ず { if (m_bServerA == false) { @@ -457,7 +446,7 @@ Q_SLOT void valueMainUI::onButtonClicked() TP_PROTOCOL_MESSAGE msg; QJsonObject sObj; sObj.insert("cmd", "showWidget"); - msg.body = sObj; + msg.body = sObj;//鍙戦佸懡浠 A渚ф娴嬬▼搴忔樉绀哄鎴风 tcp_client_ptr_A->ISendMessage(msg); } } @@ -489,6 +478,7 @@ Q_SLOT void valueMainUI::onButtonClicked() m_pDebugUI->setWindowTitle(tr("璋冭瘯椤甸潰")); m_pDebugUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pDebugUI->setWindowIcon(QIcon(WINDOWICON)); + //灞忚斀 绐楀彛涓嶉樆濉 //m_pDebugUI->setWindowModality(Qt::ApplicationModal); //m_pDebugUI->setAttribute(Qt::WA_ShowModal, true); m_pDebugUI->show(); @@ -503,7 +493,6 @@ Q_SLOT void valueMainUI::onButtonClicked() m_pConfigUI->setWindowModality(Qt::ApplicationModal); m_pConfigUI->setAttribute(Qt::WA_ShowModal, true); m_pConfigUI->show(); - //check(); } else if (strObj == "action_communicate") { @@ -529,7 +518,7 @@ QByteArray valueMainUI::Json2byte(QJsonObject obj) void valueMainUI::timerEvent(QTimerEvent *event) { - if (m_timerA == event->timerId()) + if (m_timerA == event->timerId())//璋冭瘯 瀹氭椂瑙﹀彂鐩告満鎷嶇収 鐩告満瑙﹀彂妯″紡涓鸿蒋浠惰Е鍙 { TP_PROTOCOL_MESSAGE msg; QJsonObject sObj; @@ -548,7 +537,7 @@ void valueMainUI::timerEvent(QTimerEvent *event) tcp_client_ptr_B->ISendMessage(msg); } else if (m_SysTimerID == event->timerId()) - { + {//绯荤粺鐘舵佷俊鎭畾鏃跺埛鏂板睍绀 m_tickCount++; m_CoutB++; m_CoutA++; @@ -604,8 +593,9 @@ void valueMainUI::timerEvent(QTimerEvent *event) m_pLabelB->setStyleSheet("background-color: rgb(200, 10, 10);"); } } - else { + else {//涓嶅惎鐢ㄥ弻宸ヤ綅 m_pLabelB->setText(""); + m_pLabelB->setStyleSheet(""); } if (m_pPlcDevice) @@ -635,8 +625,8 @@ void valueMainUI::timerEvent(QTimerEvent *event) killTimer(m_timerStartID); m_timerStartID = 0; - onStartProcess(); - onConnectA(); + onStartProcess();//鍚姩搴旂敤 + onConnectA();//寤虹珛tcp閫氳杩炴帴 if (lpConfig::instance()->doubleStation == true) { onConnectB(); @@ -666,8 +656,8 @@ void valueMainUI::closeEvent(QCloseEvent *event) } Q_SLOT void valueMainUI::onDebugClicked(int nID) -{ - if (nID == 1) +{//璋冭瘯娴嬭瘯椤甸潰鎸夐挳鍝嶅簲浜嬩欢 鑷畾涔夊懡浠 + if (nID == 1)//A渚х浉鏈哄崟娆¤Е鍙 { TP_PROTOCOL_MESSAGE msg; QJsonObject sObj; @@ -676,7 +666,7 @@ Q_SLOT void valueMainUI::onDebugClicked(int nID) if (tcp_client_ptr_A) tcp_client_ptr_A->ISendMessage(msg); } - else if (nID == 2) + else if (nID == 2)//B渚х浉鏈哄崟娆¤Е鍙 { TP_PROTOCOL_MESSAGE msg; QJsonObject sObj; @@ -685,7 +675,7 @@ Q_SLOT void valueMainUI::onDebugClicked(int nID) if (tcp_client_ptr_B) tcp_client_ptr_B->ISendMessage(msg); } - else if (nID == 3) + else if (nID == 3)//A渚х浉鏈哄畾鏃惰Е鍙 { if (m_timerA != 0) { @@ -693,10 +683,10 @@ Q_SLOT void valueMainUI::onDebugClicked(int nID) m_timerA = 0; } else { - m_timerA = startTimer(5000); + m_timerA = startTimer(5000);//鏃堕棿鍥哄畾5s } } - else if (nID == 4) + else if (nID == 4)//B渚х浉鏈哄畾鏃惰Е鍙 { if (m_timerB != 0) { @@ -718,10 +708,10 @@ Q_SLOT void valueMainUI::onConnected_A(bool bFalg) bLastState = m_bServerA; if (bLastState == false) { - ui.textEdit->append("璁惧鏂紑杩炴帴"); + ui.textEdit->append(tr("妫娴嬬郴缁熷凡绂荤嚎!!!")); } else { - ui.textEdit->append("璁惧宸茶繛鎺"); + ui.textEdit->append(tr("妫娴嬬郴缁熷凡鍦ㄧ嚎...")); } } } @@ -735,14 +725,14 @@ Q_SLOT void valueMainUI::onConnected_B(bool bFalg) bLastState = m_bServerB; if (bLastState == false) { - ui.textEdit_2->append("璁惧鏂紑杩炴帴"); + ui.textEdit_2->append(tr("妫娴嬬郴缁熷凡绂荤嚎!!!")); } else { - ui.textEdit_2->append("璁惧宸茶繛鎺"); + ui.textEdit_2->append(tr("妫娴嬬郴缁熷凡鍦ㄧ嚎...")); } } } - +//娴嬭瘯浠g爜 澶囩敤 鏌ユ壘绯荤粺涓浉鍏硉ask鏄惁鍦ㄨ繍琛 void valueMainUI::check() { QString strExeName = QString("%1.exe").arg("Enchanter"); @@ -775,6 +765,7 @@ void valueMainUI::onRunApp(QString strAppPath) } } +//鍚姩妫娴嬬▼搴 璺緞鍥哄畾 Q_SLOT void valueMainUI::onStartProcess() { QString strAppPath = lpConfig::instance()->appPathA; @@ -782,7 +773,7 @@ Q_SLOT void valueMainUI::onStartProcess() return; onRunApp(lpConfig::instance()->appPathA); - if (lpConfig::instance()->doubleStation == false) + if (lpConfig::instance()->doubleStation == false)//鍙屽伐浣嶅惎鍔 return; strAppPath = lpConfig::instance()->appPathB; diff --git a/tpvs17/valueMainUI/valueMainUI.vcxproj b/tpvs17/valueMainUI/valueMainUI.vcxproj index c593f1c..2c32b30 100644 --- a/tpvs17/valueMainUI/valueMainUI.vcxproj +++ b/tpvs17/valueMainUI/valueMainUI.vcxproj @@ -62,7 +62,7 @@ Windows $(OutDir)\$(ProjectName).exe - $(QTDIR)\lib;E:\wheelValve\3part\lp_libtcp\lib;%(AdditionalLibraryDirectories) + $(QTDIR)\lib;.\..\..\3part\lp_libtcp\lib;%(AdditionalLibraryDirectories) true qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5WebSocketsd.lib;Qt5Widgetsd.lib;Qt5Locationd.lib;Qt5Networkd.lib;libTcpClientd.lib;%(AdditionalDependencies) @@ -134,7 +134,6 @@ - @@ -148,12 +147,6 @@ - - - .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets - .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets - - diff --git a/tpvs17/valueMainUI/valueMainUI.vcxproj.filters b/tpvs17/valueMainUI/valueMainUI.vcxproj.filters index 670a80c..f11c293 100644 --- a/tpvs17/valueMainUI/valueMainUI.vcxproj.filters +++ b/tpvs17/valueMainUI/valueMainUI.vcxproj.filters @@ -42,9 +42,6 @@ Source Files - - Source Files - view @@ -107,9 +104,6 @@ Header Files - - Header Files - view