From 02b18e8133d57ef1e83018d1aa711244ff16e490 Mon Sep 17 00:00:00 2001 From: "bob.pan" Date: Thu, 30 Sep 2021 08:59:42 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81valueMain=E4=B8=BB=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=A2=9E=E5=8A=A0PLC=E9=80=9A=E8=AE=AF?= =?UTF-8?q?=E5=92=8C=E6=B5=8B=E8=AF=95UI=EF=BC=8C=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=B1=95=E7=A4=BA=E5=8A=9F=E8=83=BD=202?= =?UTF-8?q?=E3=80=81=E6=B3=A8=E5=86=8C=E7=A0=81=E9=87=8D=E6=96=B0=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=8E=B7=E5=8F=96=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3part/tadpole/include/tpBase/lpdesigner.h | 2 + ...识别定位一体与PLC通讯协议.docx | Bin 0 -> 12637 bytes .../lpCamVirtual/CameraVirtualFolder.cpp | 2 + src/lpbdesigner/CDetectorUI.cpp | 12 +- src/lpbdesigner/CDetectorUI.h | 2 + src/tpMain/Result2Ui.h | 1 + src/tpMain/cryptokey/lpCryptokey.cpp | 15 +- tpvs17/tpMain/QPLCDevice.cpp | 40 ++- tpvs17/tpMain/QPLCDevice.h | 15 +- tpvs17/tpMain/lpMainWin.cpp | 136 ++++++---- tpvs17/tpMain/lpMainWin.h | 6 +- .../tpMain/lpRawTcp/lpRawTcpClientSession.cpp | 13 +- .../tpMain/lpRawTcp/lpRawTcpClientSession.h | 4 +- tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.cpp | 17 +- tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.h | 1 + tpvs17/valueMainUI/QTCPDebugUI.cpp | 58 +++++ tpvs17/valueMainUI/QTCPDebugUI.h | 26 ++ tpvs17/valueMainUI/QTCPDebugUI.ui | 62 +++++ tpvs17/valueMainUI/config.ini | 5 +- tpvs17/valueMainUI/lpConfig.cpp | 2 + tpvs17/valueMainUI/lpConfig.h | 2 +- tpvs17/valueMainUI/lpConfigUI.cpp | 2 + tpvs17/valueMainUI/lpConfigUI.ui | 124 ++++++++- tpvs17/valueMainUI/lpGlobalData.cpp | 9 + tpvs17/valueMainUI/lpGlobalData.h | 16 ++ tpvs17/valueMainUI/valueMainUI.aps | Bin 85312 -> 84884 bytes tpvs17/valueMainUI/valueMainUI.cpp | 244 ++++++++++++++++-- tpvs17/valueMainUI/valueMainUI.h | 19 +- tpvs17/valueMainUI/valueMainUI.ui | 31 ++- tpvs17/valueMainUI/valueMainUI.vcxproj | 36 ++- .../valueMainUI/valueMainUI.vcxproj.filters | 42 +++ 31 files changed, 832 insertions(+), 112 deletions(-) create mode 100644 doc/轮毂识别定位一体与PLC通讯协议.docx create mode 100644 tpvs17/valueMainUI/QTCPDebugUI.cpp create mode 100644 tpvs17/valueMainUI/QTCPDebugUI.h create mode 100644 tpvs17/valueMainUI/QTCPDebugUI.ui create mode 100644 tpvs17/valueMainUI/lpGlobalData.cpp create mode 100644 tpvs17/valueMainUI/lpGlobalData.h diff --git a/3part/tadpole/include/tpBase/lpdesigner.h b/3part/tadpole/include/tpBase/lpdesigner.h index 8fee317..346e984 100644 --- a/3part/tadpole/include/tpBase/lpdesigner.h +++ b/3part/tadpole/include/tpBase/lpdesigner.h @@ -20,6 +20,8 @@ class IDetectorUI public: virtual bool Initialize(IDetectorEngine* lpDE) = 0; virtual bool ShowMainFrame(class QWidget* parent = nullptr) = 0; + virtual void HideMainFrame() = 0; + virtual bool IsMainFrameHidden() = 0; }; diff --git a/doc/轮毂识别定位一体与PLC通讯协议.docx b/doc/轮毂识别定位一体与PLC通讯协议.docx new file mode 100644 index 0000000000000000000000000000000000000000..965bffa2db354d6fbdf62a08118f361afe8112d1 GIT binary patch literal 12637 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 Bob>width = m_nImageWidth; + m_pCamOpt->height = m_nImageHeight; QImage::Format fd = img.format(); m_nColorFormat = TP_FUNCS::FromQImageFormat(img); m_pCb->IPushCameraData(this); diff --git a/src/lpbdesigner/CDetectorUI.cpp b/src/lpbdesigner/CDetectorUI.cpp index 7799439..6a8ce11 100644 --- a/src/lpbdesigner/CDetectorUI.cpp +++ b/src/lpbdesigner/CDetectorUI.cpp @@ -37,7 +37,7 @@ bool CDetectorUI::ShowMainFrame(class QWidget* parent) return false; m_pMainFrame->setParent(parent); - m_pMainFrame->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + m_pMainFrame->setWindowFlags(Qt::Dialog | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint); m_pMainFrame->setWindowIcon(QIcon(":/image/leaper")); m_pMainFrame->setWindowModality(Qt::ApplicationModal); m_pMainFrame->setAttribute(Qt::WA_ShowModal, true); @@ -46,3 +46,13 @@ bool CDetectorUI::ShowMainFrame(class QWidget* parent) return true; } +void CDetectorUI::HideMainFrame() +{ + m_pMainFrame->hide(); +} + +bool CDetectorUI::IsMainFrameHidden() +{ + return m_pMainFrame->isHidden(); +} + diff --git a/src/lpbdesigner/CDetectorUI.h b/src/lpbdesigner/CDetectorUI.h index e39fcfe..e5a9f84 100644 --- a/src/lpbdesigner/CDetectorUI.h +++ b/src/lpbdesigner/CDetectorUI.h @@ -10,6 +10,8 @@ public: virtual ~CDetectorUI(); bool Initialize(IDetectorEngine* lpDE); virtual bool ShowMainFrame(class QWidget* parent = nullptr); + virtual void HideMainFrame(); + virtual bool IsMainFrameHidden(); private: CMainFrame* m_pMainFrame{ nullptr }; IDetectorEngine* m_pDE{ nullptr }; diff --git a/src/tpMain/Result2Ui.h b/src/tpMain/Result2Ui.h index affb8e5..0405651 100644 --- a/src/tpMain/Result2Ui.h +++ b/src/tpMain/Result2Ui.h @@ -32,6 +32,7 @@ public: // }; /*定位检测结果*/ struct ValueResult { + int stationID{ 1 };//工位ID 1 A侧 2 B侧 QString strModel{ "NG" };//型号名 double score{ 0.0 };//分数 double angle{ 0.0 };//定位角度 diff --git a/src/tpMain/cryptokey/lpCryptokey.cpp b/src/tpMain/cryptokey/lpCryptokey.cpp index 7ec095a..4f38d13 100644 --- a/src/tpMain/cryptokey/lpCryptokey.cpp +++ b/src/tpMain/cryptokey/lpCryptokey.cpp @@ -9,7 +9,7 @@ namespace lpCryptokey QString genSerialNumber(const QString& mac) { unsigned long long ulMacTmp = 0; - QString newMac = mac;// +ComponyKey; + QString newMac = mac + ComponyKey; std::string mStrMac = newMac.toStdString(); mStrMac.erase(std::remove(mStrMac.begin(), mStrMac.end(), ':'), mStrMac.end()); mStrMac.erase(std::remove(mStrMac.begin(), mStrMac.end(), '-'), mStrMac.end()); @@ -74,8 +74,17 @@ lpCheckKey::~lpCheckKey() //检查linese是否匹配 bool lpCheckKey::checkLinese() { - std::string biosID = lpHardwareInfo::instance()->getHardDrive(); - m_SerialNo = lpCryptokey::genSerialNumber(QString(biosID.c_str())); + std::string hardDriveID = lpHardwareInfo::instance()->getHardDrive(); + std::string cpuID = lpHardwareInfo::instance()->getCpuID(); + std::string BoardID = lpHardwareInfo::instance()->getMotherBoardID(); + std::string macID = lpHardwareInfo::instance()->getMacAddress(); + if (hardDriveID.size() > 0) + { + m_SerialNo = lpCryptokey::genSerialNumber(QString(hardDriveID.c_str()) + QString(cpuID.c_str())); + } + else { + m_SerialNo = lpCryptokey::genSerialNumber(QString(BoardID.c_str()) + QString(macID.c_str())); + } QSettings settingKey("Leaper_Register"); QString strKey = settingKey.value("key").toString(); diff --git a/tpvs17/tpMain/QPLCDevice.cpp b/tpvs17/tpMain/QPLCDevice.cpp index 21f4ff0..0644585 100644 --- a/tpvs17/tpMain/QPLCDevice.cpp +++ b/tpvs17/tpMain/QPLCDevice.cpp @@ -24,6 +24,7 @@ void QPLCDevice::onInitDevice() if (!m_rawTcpServer) { m_rawTcpServer = new lptkRawTcpServer(); connect(m_rawTcpServer, &lptkRawTcpServer::client_status_changed, this, &QPLCDevice::on_serv_status_changed); + connect(m_rawTcpServer, &lptkRawTcpServer::client_connect_status, this, &QPLCDevice::on_client_connect_status); RecvDataFunc func = std::bind(&QPLCDevice::onRecvFunc, this, std::placeholders::_1); m_rawTcpServer->setRecvCallFunc(func); } @@ -48,6 +49,7 @@ void QPLCDevice::onRecvFunc(QByteArray data) mMtLock.lock(); m_recvData.append(data); mMtLock.unlock(); + emit sgRecvDataCallBack(data); } void QPLCDevice::sendByteData(QByteArray byteData) @@ -59,6 +61,7 @@ void QPLCDevice::sendByteData(QByteArray byteData) { m_rawTcpServer->broadcast_send_data(sendData); } + emit sgSendDataCallBack(byteData); } Q_SLOT void QPLCDevice::on_serv_status_changed(int id, ServerStatus status) @@ -108,7 +111,8 @@ void QPLCDevice::onParaster(QByteArray recvData) if (cmd.toInt() == 1)// { - emit sgTrigerCam(data.toInt()); + int stationID = data.toInt(); + emit sgTrigerCam(stationID); } else if (cmd.toInt() == 2) { @@ -119,7 +123,7 @@ void QPLCDevice::onParaster(QByteArray recvData) void QPLCDevice::onSendValueRlt(const ValueResult& rlt) { - QString sdata = QString("CA;3;%1;%2;%3;%4;#").arg(rlt.strModel).arg(rlt.angle).arg(rlt.center.x()).arg(rlt.center.y()); + QString sdata = QString("CA;3;%1;%2;%3;%4;%5,#").arg(rlt.stationID).arg(rlt.strModel).arg(rlt.angle).arg(rlt.center.x()).arg(rlt.center.y()); sendByteData(sdata.toLatin1()); } @@ -129,8 +133,36 @@ void QPLCDevice::onSendHeartBit() sendByteData(sdata.toLatin1()); } -void QPLCDevice::onAckTrigerCam() +void QPLCDevice::onAckTrigerCam(int stationID) { - QString sdata = QString("CA;1;1;#"); + QString sdata = QString("CA;1;%1;#").arg(stationID); sendByteData(sdata.toLatin1()); } + +Q_SLOT void QPLCDevice::on_client_connect_status(QString ip, int port, ServerStatus status) +{ + QString clientName = QString("%1:%2").arg(ip).arg(port); + switch (status) { + case TCPSERVER_ON_CLIENT_CONNECTED: + if (!m_clientList.contains(clientName)) + { + m_clientList.append(clientName); + } + break; + case TCPSERVER_ON_CLIENT_DISCONNECTED: + if (m_clientList.contains(clientName)) + m_clientList.removeAll(clientName); + break; + default: + break; + } +} +bool QPLCDevice::getClinetInfo(QString &client) +{ + if (m_clientList.size() > 0) + { + client = m_clientList.first(); + return true; + } + return false; +} diff --git a/tpvs17/tpMain/QPLCDevice.h b/tpvs17/tpMain/QPLCDevice.h index 32a2f47..05f06a3 100644 --- a/tpvs17/tpMain/QPLCDevice.h +++ b/tpvs17/tpMain/QPLCDevice.h @@ -20,21 +20,28 @@ public: void onRecvFunc(QByteArray data); void sendByteData(QByteArray byteData); - Q_SLOT void on_serv_status_changed(int id, ServerStatus status); + bool onRunTask(); void onParaster(QByteArray recvData); void onSendValueRlt(const ValueResult& rlt);//Ͷλ - void onSendHeartBit();// - void onAckTrigerCam();//ʹӦ + void onSendHeartBit();// + void onAckTrigerCam(int stationID);//ʹӦ + Q_SLOT void on_serv_status_changed(int id, ServerStatus status); + Q_SLOT void on_client_connect_status(QString ip, int port, ServerStatus status); + bool getClinetInfo(QString &client); + signals: void sgTrigerCam(int camID); - + void sgSendDataCallBack(QByteArray); + void sgRecvDataCallBack(QByteArray); private: lptkRawTcpServer *m_rawTcpServer{ nullptr }; private: QMutex mMtLock; QByteArray m_recvData; lpThread *m_pTask{ nullptr }; + + QStringList m_clientList; }; #endif // ifndef _QPLCDEVICE_H_ \ No newline at end of file diff --git a/tpvs17/tpMain/lpMainWin.cpp b/tpvs17/tpMain/lpMainWin.cpp index ae19783..aeb8780 100644 --- a/tpvs17/tpMain/lpMainWin.cpp +++ b/tpvs17/tpMain/lpMainWin.cpp @@ -22,9 +22,9 @@ #include "databasesql.h" #include "lpCryptokey.h" -#define VERSION_HUB "3.0.1.3" +#define VERSION_HUB "3.0.1.4" #define VERSION_ALG "3.0.1.3" -#define UPDATE_TIME "2021-09-22" +#define UPDATE_TIME "2021-09-30" #pragma execution_character_set("utf-8") @@ -861,8 +861,8 @@ Q_SLOT void lpMainWin::onActionClicked() m_pDebugDlg->setWindowTitle(tr("调试工具")); m_pDebugDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pDebugDlg->setWindowIcon(QIcon(":/image/leaper")); - m_pDebugDlg->setWindowModality(Qt::ApplicationModal); - m_pDebugDlg->setAttribute(Qt::WA_ShowModal, true); + //m_pDebugDlg->setWindowModality(Qt::ApplicationModal); + //m_pDebugDlg->setAttribute(Qt::WA_ShowModal, true); m_pDebugDlg->show(); } } @@ -870,7 +870,7 @@ Q_SLOT void lpMainWin::onActionClicked() if (m_pWorkUI) { m_pWorkUI->setParent(this); - m_pWorkUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + m_pWorkUI->setWindowFlags(Qt::Dialog |Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint ); m_pWorkUI->setWindowIcon(QIcon(":/image/leaper")); m_pWorkUI->setWindowModality(Qt::ApplicationModal); m_pWorkUI->setAttribute(Qt::WA_ShowModal, true); @@ -904,7 +904,7 @@ Q_SLOT void lpMainWin::onActionClicked() { m_pModelMgrDlg->setParent(this); m_pModelMgrDlg->setWindowTitle(tr("模板管理")); - m_pModelMgrDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + m_pModelMgrDlg->setWindowFlags(Qt::Dialog | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint); m_pModelMgrDlg->setWindowIcon(QIcon(":/image/leaper")); m_pModelMgrDlg->setWindowModality(Qt::ApplicationModal); m_pModelMgrDlg->setAttribute(Qt::WA_ShowModal, true); @@ -981,8 +981,8 @@ Q_SLOT void lpMainWin::onActionClicked() m_pAlgParamDlg->setWindowTitle(tr("算法参数")); m_pAlgParamDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pAlgParamDlg->setWindowIcon(QIcon(":/image/leaper")); - m_pAlgParamDlg->setWindowModality(Qt::ApplicationModal); - m_pAlgParamDlg->setAttribute(Qt::WA_ShowModal, true); + //m_pAlgParamDlg->setWindowModality(Qt::ApplicationModal); + //m_pAlgParamDlg->setAttribute(Qt::WA_ShowModal, true); m_pAlgParamDlg->show(); } } @@ -1290,6 +1290,7 @@ Q_SLOT void lpMainWin::onTriggerCam() QStringList strLst = m_pCoreCtrl->ICameraKeys(); m_pCoreCtrl->ISnapImage(strLst); } + AckTriggerCam(); } void lpMainWin::onInitAbout() @@ -1681,42 +1682,12 @@ Q_SLOT void lpMainWin::onPLCTrigerCam(int camID) onTriggerCam(); } -Q_SLOT void lpMainWin::onWebSocketRecvData(QWebSocket* p, QByteArray data) -{ - QJsonDocument doc = QJsonDocument::fromJson(data); - QJsonObject json = doc.object(); - if (!json.empty()) - { - QString strcmd = json.value("cmd").toString(); - if (strcmd == "trigerCam") - { - onTriggerCam(); - } - else if (strcmd == "heartbit") - { - - } - else if (strcmd == "showWidget") - { - this->setWindowFlags(Qt::WindowStaysOnTopHint); - this->show(); - } - else if (strcmd == "hideWidget") - { - - } - else if (strcmd == "exitApp") - { - onQuitApplication(); - } - } -} - void lpMainWin::onTcpHeartBit() { QJsonObject heartObj; heartObj.insert("deviceName", "A"); heartObj.insert("cmd", "heartbit"); + heartObj.insert("runState", lpGlobalConfig::instance()->IsDetect); heartObj.insert("time", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz")); if (tcp_server_ptr_) { @@ -1778,13 +1749,10 @@ void lpMainWin::setupTrayIcon() QIcon icon(":/image/leaper"); m_trayIcon->setIcon(icon); m_trayIcon->setContextMenu(m_trayIconMenu); - //m_trayIcon->show(); connect(m_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onActivated(QSystemTrayIcon::ActivationReason))); connect(m_restoreAction, &QAction::triggered, this, [this]() { setMainWindowVisibility(isHidden()); -// || windowState() == Qt::WindowMinimized -// || (qApp->applicationState() == Qt::ApplicationInactive)); }); connect(m_quitAction, &QAction::triggered, this, &lpMainWin::onQuitApplication); } @@ -1801,14 +1769,76 @@ void lpMainWin::setMainWindowVisibility(bool state) { if (state) { onShowMainWindow(); -// qApp->processEvents(); -// qApp->setActiveWindow(this); -// qApp->processEvents(); m_restoreAction->setText(tr("后台运行")); } else { m_restoreAction->setText(tr("显示界面")); hide(); + if (m_pAlgParamDlg) + { + if (!m_pAlgParamDlg->isHidden()) + { + m_pAlgParamDlg->hide(); + } + } + if (m_pDebugDlg) + { + if (!m_pDebugDlg->isHidden()) + { + m_pDebugDlg->hide(); + } + } + if (m_pModelMgrDlg) + { + if (!m_pModelMgrDlg->isHidden()) + { + m_pModelMgrDlg->hide(); + } + } + if (m_CamSettingDlg) + { + if (!m_CamSettingDlg->isHidden()) + { + m_CamSettingDlg->hide(); + } + } + if (m_pSystemConfigUI) + { + if (!m_pSystemConfigUI->isHidden()) + { + m_pSystemConfigUI->hide(); + } + } + if (m_pWorkUI) { + if (!m_pWorkUI->isHidden()) + { + m_pWorkUI->hide(); + } + } + if (!m_aboutDlg.isHidden()) + { + m_aboutDlg.hide(); + } + if (m_pImageCaliUI) + { + if (!m_pImageCaliUI->isHidden()) + { + m_pImageCaliUI->hide(); + } + } + if (m_pDesigner) { + if (!m_pDesigner->IsMainFrameHidden()) + { + m_pDesigner->HideMainFrame(); + } + } + if (m_pCheckLineseUI) + { + if (!m_pCheckLineseUI->isHidden()) + { + m_pCheckLineseUI->hide(); + } + } } } @@ -1986,3 +2016,19 @@ void lpMainWin::onShowMainWindow() this->raise(); } } + +void lpMainWin::AckTriggerCam() +{ + if (tcp_server_ptr_) + { + QJsonObject ackObj; + ackObj.insert("deviceName", "A"); + ackObj.insert("cmd", "triggerAck"); + ackObj.insert("runState", lpGlobalConfig::instance()->IsDetect); + ackObj.insert("time", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz")); + + TP_PROTOCOL_MESSAGE msg; + msg.body = ackObj; + tcp_server_ptr_->ISendMessage("*", msg); + } +} diff --git a/tpvs17/tpMain/lpMainWin.h b/tpvs17/tpMain/lpMainWin.h index 6e0cdbd..eeb7cd8 100644 --- a/tpvs17/tpMain/lpMainWin.h +++ b/tpvs17/tpMain/lpMainWin.h @@ -25,7 +25,7 @@ #include "lpImageCaliUI.h" #include "QPLCDevice.h" #include "lpSystemConfigUI.h" -#include "WebServer.h" +//#include "WebServer.h" #include #include "QCryptokeyUI.h" #include "QAlgParamDlg.h" @@ -116,7 +116,6 @@ protected: Q_SLOT void modWorkMgr(QString str); Q_SLOT void onPLCTrigerCam(int camID); - Q_SLOT void onWebSocketRecvData(QWebSocket* p, QByteArray data); void onTcpHeartBit();//websocket 通讯心跳 void sendWebAlgRlt(const ValueResult& rlt); QJsonObject byte2Json(QByteArray data); @@ -147,6 +146,7 @@ private: Q_SLOT void on_data_recv_completed(const QString &client_name, QSharedPointer msg_ptr, QSharedPointer pData); void paraJson(const QJsonObject& obj); void onShowMainWindow(); + void AckTriggerCam(); protected: virtual void timerEvent(QTimerEvent *event); virtual void closeEvent(QCloseEvent *event); @@ -226,8 +226,6 @@ private: IDetectorEngine* m_pEngineCtrl{nullptr}; CDllDesigner* m_pDllDesigner{ nullptr }; IDetectorUI* m_pDesigner{ nullptr }; -private: - WebServer *m_pWebSocket{ nullptr }; QSharedPointer tcp_server_ptr_; private: diff --git a/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.cpp b/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.cpp index 2acc2f9..37d7c96 100644 --- a/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.cpp +++ b/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.cpp @@ -1,4 +1,6 @@ #include "lpRawTcpClientSession.h" +#include + #include #pragma execution_character_set("utf-8") lpRawClientSession::lpRawClientSession(int ID, QObject *parent) @@ -56,6 +58,16 @@ void lpRawClientSession::on_data_to_send(int sess_id, QSharedPointer psocket_->write(data->constData(), data->size()); } +QString lpRawClientSession::getClientIP() +{ + return psocket_->peerAddress().toString(); +} + +int lpRawClientSession::getClientPort() +{ + return psocket_->peerPort(); +} + void lpRawClientSession::socket_close() { @@ -64,6 +76,5 @@ void lpRawClientSession::socket_close() psocket_->abort(); psocket_->close(); } - } diff --git a/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.h b/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.h index bf3ad80..3aced6d 100644 --- a/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.h +++ b/tpvs17/tpMain/lpRawTcp/lpRawTcpClientSession.h @@ -17,9 +17,9 @@ public: void setRecvCallBackFunc(RecvDataFunc func) { _func = func; }; void force_close(); - - Q_SLOT void on_data_to_send(int sess_id, QSharedPointer); + QString getClientIP(); + int getClientPort(); signals: void data_received(int, QSharedPointer); void sess_disconnected(int); diff --git a/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.cpp b/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.cpp index 1dce139..1493507 100644 --- a/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.cpp +++ b/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.cpp @@ -90,7 +90,12 @@ void lptkRawTcpServer::incomingConnection(qintptr socketDescriptor) client_sessions_[socketDescriptor] = cli_sess; pThrd->start(); + QString strIP = pclientSess->getClientIP(); + int n = strIP.lastIndexOf(":"); + strIP = strIP.mid(n).remove(":"); + int port = pclientSess->getClientPort(); emit client_status_changed(socketDescriptor, TCPSERVER_ON_CLIENT_CONNECTED); + emit client_connect_status(strIP, port, TCPSERVER_ON_CLIENT_CONNECTED); } void lptkRawTcpServer::on_data_received(int sess_id, QSharedPointer data_ptr) @@ -102,9 +107,7 @@ void lptkRawTcpServer::on_data_received(int sess_id, QSharedPointer return; } - emit data_received(sess_id, data_ptr); - } void lptkRawTcpServer::on_sess_disconnected(int sess_id) @@ -119,9 +122,15 @@ void lptkRawTcpServer::on_sess_disconnected(int sess_id) if (cli_sess.pThrd_->isRunning()) { cli_sess.pThrd_->exit(0); } - delete cli_sess.pThrd_;// ->deleteLater(); + + QString strIP = cli_sess.pSess_->getClientIP(); + int n = strIP.lastIndexOf(":"); + strIP = strIP.mid(n).remove(":"); + int port = cli_sess.pSess_->getClientPort(); + emit client_connect_status(strIP, port, TCPSERVER_ON_CLIENT_DISCONNECTED); + + delete cli_sess.pThrd_; delete cli_sess.pSess_; - //cli_sess.pThrd_->deleteLater(); client_sessions_.erase(it); } diff --git a/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.h b/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.h index efba0d9..92499bd 100644 --- a/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.h +++ b/tpvs17/tpMain/lpRawTcp/lptkRawTcpServer.h @@ -43,6 +43,7 @@ signals: void client_status_changed(int, ServerStatus); void data_received(int, QSharedPointer); void data_to_send(int, QSharedPointer); + void client_connect_status(QString ip, int port, ServerStatus); public slots: void on_sess_disconnected(int); diff --git a/tpvs17/valueMainUI/QTCPDebugUI.cpp b/tpvs17/valueMainUI/QTCPDebugUI.cpp new file mode 100644 index 0000000..87db74a --- /dev/null +++ b/tpvs17/valueMainUI/QTCPDebugUI.cpp @@ -0,0 +1,58 @@ +#include "QTCPDebugUI.h" +#include "lpGlobalData.h" +#include +QTCPDebugUI::QTCPDebugUI(QWidget *parent) + : QWidget(parent) +{ + ui.setupUi(this); + connect(ui.checkBox_Recv, SIGNAL(stateChanged(int)), this, SLOT(onStateChange(int))); + connect(ui.checkBox_Send, SIGNAL(stateChanged(int)), this, SLOT(onStateChange(int))); +} + +QTCPDebugUI::~QTCPDebugUI() +{ +} + +void QTCPDebugUI::appendRecvData(QByteArray data) +{ + QString msg = QString("recv %1->%2").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(QString(data)); + ui.plainTextEdit->appendPlainText(msg); +} + +void QTCPDebugUI::appendSendData(QByteArray data) +{ + QString msg = QString("send %1->%2").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(QString(data)); + ui.plainTextEdit->appendPlainText(msg); +} + +void QTCPDebugUI::closeEvent(QCloseEvent *event) +{ + lpGlobalData::instance()->bShowRecv = false; + lpGlobalData::instance()->bShowSend = false; +} + +void QTCPDebugUI::showEvent(QShowEvent *event) +{ + ui.plainTextEdit->clear(); + ui.checkBox_Recv->setChecked(false); + ui.checkBox_Send->setChecked(false); +} + +Q_SLOT void QTCPDebugUI::onStateChange(int state) +{ + QString strObj = sender()->objectName(); + if (strObj == "checkBox_Recv") + { + if (state > 0) + lpGlobalData::instance()->bShowRecv = true; + else + lpGlobalData::instance()->bShowRecv = false; + } + else if (strObj == "checkBox_Send") + { + if (state > 0) + lpGlobalData::instance()->bShowSend = true; + else + lpGlobalData::instance()->bShowSend = false; + } +} diff --git a/tpvs17/valueMainUI/QTCPDebugUI.h b/tpvs17/valueMainUI/QTCPDebugUI.h new file mode 100644 index 0000000..e55f2f8 --- /dev/null +++ b/tpvs17/valueMainUI/QTCPDebugUI.h @@ -0,0 +1,26 @@ +#ifndef _QTCPDEBUG_H_ +#define _QTCPDEBUG_H_ + +#include +#include "ui_QTCPDebugUI.h" + +class QTCPDebugUI : public QWidget +{ + Q_OBJECT + +public: + QTCPDebugUI(QWidget *parent = Q_NULLPTR); + ~QTCPDebugUI(); + + void appendRecvData(QByteArray data); + void appendSendData(QByteArray data); +protected: + virtual void closeEvent(QCloseEvent *event); + virtual void showEvent(QShowEvent *event); + + Q_SLOT void onStateChange(int state); +private: + Ui::QTCPDebugUI ui; +}; + +#endif diff --git a/tpvs17/valueMainUI/QTCPDebugUI.ui b/tpvs17/valueMainUI/QTCPDebugUI.ui new file mode 100644 index 0000000..65bd491 --- /dev/null +++ b/tpvs17/valueMainUI/QTCPDebugUI.ui @@ -0,0 +1,62 @@ + + + QTCPDebugUI + + + + 0 + 0 + 575 + 407 + + + + QTCPDebugUI + + + + + + + 12 + + + + 显示接收数据 + + + + + + + + 12 + + + + 显示发送数据 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + diff --git a/tpvs17/valueMainUI/config.ini b/tpvs17/valueMainUI/config.ini index 8526949..72cc841 100644 --- a/tpvs17/valueMainUI/config.ini +++ b/tpvs17/valueMainUI/config.ini @@ -2,4 +2,7 @@ urlA=ws://localhost:10110 urlB=ws://localhost:10111 appPathA=E:/wheelValve/runner17/Enchanter.exe -appPathB=E:/wheelValve/runner17/lpReportd.exe +appPathB=E:/wheelValve/Release/runner17_B/Enchanter_B.exe +doubleStation=true +portA=10110 +portB=10111 diff --git a/tpvs17/valueMainUI/lpConfig.cpp b/tpvs17/valueMainUI/lpConfig.cpp index 0318e76..44a6ca6 100644 --- a/tpvs17/valueMainUI/lpConfig.cpp +++ b/tpvs17/valueMainUI/lpConfig.cpp @@ -19,6 +19,7 @@ void lpConfig::saveConfig() setting.setValue("appPathA", appPathA); setting.setValue("appPathB", appPathB); setting.setValue("doubleStation", doubleStation); + setting.setValue("serverPort", plcServerPort); } void lpConfig::loadConfig() @@ -29,4 +30,5 @@ void lpConfig::loadConfig() appPathA = setting.value("appPathA").toString(); appPathB = setting.value("appPathB").toString(); doubleStation = setting.value("doubleStation",true).toBool(); + plcServerPort = setting.value("serverPort", 1000).toInt(); } diff --git a/tpvs17/valueMainUI/lpConfig.h b/tpvs17/valueMainUI/lpConfig.h index 0a521d8..6dde2a5 100644 --- a/tpvs17/valueMainUI/lpConfig.h +++ b/tpvs17/valueMainUI/lpConfig.h @@ -19,7 +19,7 @@ public: QString appPathA; QString appPathB; bool doubleStation{ true };//true ˫λ ; false λ - + int plcServerPort{ 1000 }; }; #endif \ No newline at end of file diff --git a/tpvs17/valueMainUI/lpConfigUI.cpp b/tpvs17/valueMainUI/lpConfigUI.cpp index b786525..1eafe63 100644 --- a/tpvs17/valueMainUI/lpConfigUI.cpp +++ b/tpvs17/valueMainUI/lpConfigUI.cpp @@ -48,6 +48,7 @@ Q_SLOT void lpConfigUI::onButtonClicked() lpConfig::instance()->portA = ui.lineEdit_APort->text().toInt(); lpConfig::instance()->portB = ui.lineEdit_BPort->text().toInt(); lpConfig::instance()->doubleStation = ui.checkBox_doubleStation->isChecked(); + lpConfig::instance()->plcServerPort = ui.lineEdit_serverPort->text().toInt(); lpConfig::instance()->saveConfig(); ui.label_5->setVisible(true); m_timerID = startTimer(1000); @@ -66,6 +67,7 @@ void lpConfigUI::showEvent(QShowEvent *event) ui.lineEdit_APort->setText(QString("%1").arg(lpConfig::instance()->portA)); ui.lineEdit_BPort->setText(QString("%1").arg(lpConfig::instance()->portB)); ui.checkBox_doubleStation->setChecked(lpConfig::instance()->doubleStation); + ui.lineEdit_serverPort->setText(QString("%1").arg(lpConfig::instance()->plcServerPort)); } void lpConfigUI::timerEvent(QTimerEvent *event) diff --git a/tpvs17/valueMainUI/lpConfigUI.ui b/tpvs17/valueMainUI/lpConfigUI.ui index 3fbae74..ae30a5e 100644 --- a/tpvs17/valueMainUI/lpConfigUI.ui +++ b/tpvs17/valueMainUI/lpConfigUI.ui @@ -6,8 +6,8 @@ 0 0 - 545 - 303 + 532 + 394 @@ -16,8 +16,13 @@ + + + 12 + + - + 工位配置: @@ -191,7 +196,7 @@ - + @@ -244,7 +249,7 @@ - + Qt::Vertical @@ -258,27 +263,124 @@ - + 12 - - 开机自启动 + + 机台PLC通讯: + + + + + TCP服务端口: + + + + + + + 1000 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - + 12 - - 添加到桌面快捷方式 + + 系统相关: + + + + + + + + 12 + + + + 开机自启动 + + + + + + + + 12 + + + + 添加到桌面快捷方式 + + + + + + + + + + + 语言: + + + + + + + + 中文 + + + + + English + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + diff --git a/tpvs17/valueMainUI/lpGlobalData.cpp b/tpvs17/valueMainUI/lpGlobalData.cpp new file mode 100644 index 0000000..5501261 --- /dev/null +++ b/tpvs17/valueMainUI/lpGlobalData.cpp @@ -0,0 +1,9 @@ +#include "lpGlobalData.h" + +lpGlobalData::lpGlobalData() +{ +} + +lpGlobalData::~lpGlobalData() +{ +} diff --git a/tpvs17/valueMainUI/lpGlobalData.h b/tpvs17/valueMainUI/lpGlobalData.h new file mode 100644 index 0000000..e248f9c --- /dev/null +++ b/tpvs17/valueMainUI/lpGlobalData.h @@ -0,0 +1,16 @@ +#ifndef _LPGLOBALDATA_H_ +#define _LPGLOBALDATA_H_ + +#include +#include "lp_singleton_base.h" +class lpGlobalData : public lp_singleton_base +{ +public: + lpGlobalData(); + ~lpGlobalData(); + bool bShowRecv{ false }; + bool bShowSend{ false }; +}; + +#endif + diff --git a/tpvs17/valueMainUI/valueMainUI.aps b/tpvs17/valueMainUI/valueMainUI.aps index 28113f8a77168944d251c6c3f30f0dd0c32b5bdc..9c008c2feb629dc0d2a3aad5cd0e06553d991d97 100644 GIT binary patch delta 549 zcmZuu&r1SP5T050g=ESGVTTm8q)Vo|A<>~z+3I5WBf&Zp5+QgCjLs4SU0q%vM4r5K zkS_iM9lH1**r{{iB@f+Vo42|q)WE#?hHvMakJ*<8cHd&nl=Nzt`W6qcH-z378%e12 zKHOGElS*Y%5Pye8(2lu-!lMxRGXBm>8=N7b_WwxkNO+gV~wLUwaS zI+>qoYf_UBWfcef23JtxZ8Vm&ZP1`xs+13oN=80cF>-p|Ol$rm?XfH^X?vPFBxe20 zW(3>)<7VtZxM_v67-JrC*X0qGV17bFe$EneEdrfoov zxNJcdylcuU$}cZ&U3hZ%@%CAMl{9vBq*)(j)s|If=II~FaI2%)2yTemKBn>C+d6&* L1cn*pcNqKuPXd8r delta 960 zcmaJ=O>fgc5S>Zv5E_KSrJ#O@sHy})G>Mx~3KyC6t(SPwA_Q0rvQ8hrcL|>Sm%SpJ(;IG2vslr8$@VcCjPo`1=BKtL_ zm<`vodax>KqSa`6eh4)Md@J;Kp{{^vyPj{sJ%x53Splpm+x6hSvdo?rSg@{uWA!%S zfwIRpm*0_*m31n#ldgS|4Fc6CNV>MpqVcu*LD&d|2`kA5u&>H1Eq25n)t^Lcdg)+I zFR-gl*E(1k9lgimv5!A9SUtA1_)u;ie;+)QQ3xft%>pE{T_Bm~2EWpE#;xT3p9s8r z>6BS-8C1Hsn6nwYL;B|6Y%)>&b7%r(RFrB zh{Cp1WK$pQmuaJeT4tz^zLayE7{0S}fnIfRb_sHF;ETMJAd^GC#MF}xUG3uB#*agQ XU;I17@!UVT(E*Elezu?V}Y*x diff --git a/tpvs17/valueMainUI/valueMainUI.cpp b/tpvs17/valueMainUI/valueMainUI.cpp index 27d1250..981185e 100644 --- a/tpvs17/valueMainUI/valueMainUI.cpp +++ b/tpvs17/valueMainUI/valueMainUI.cpp @@ -6,7 +6,10 @@ #include "SystemTool.h" #include #include -#include "QSettings" +#include +#include +#include +#include "lpGlobalData.h" #pragma execution_character_set("utf-8") #define WINDOWICON ":/Resources/icon.png" @@ -17,8 +20,12 @@ valueMainUI::valueMainUI(QWidget *parent) setupTrayIcon(); setWindowIcon(QIcon(WINDOWICON)); setWindowTitle(tr("识别定位一体检测系统")); + lpGlobalData::instance(); + + m_pLabelA = new QLabel(this); m_pLabelB = new QLabel(this); + m_pLabelPLC = new QLabel(this); m_pLabelSystem = new QLabel(this); QFont font; font.setBold(true); @@ -26,17 +33,21 @@ valueMainUI::valueMainUI(QWidget *parent) m_pLabelA->setFont(font); m_pLabelB->setFont(font); + m_pLabelPLC->setFont(font); m_pLabelSystem->setFont(font); - m_pLabelA->setText("A侧连接状态"); - m_pLabelB->setText("B侧连接状态"); - m_pLabelSystem->setText("时间"); + m_pLabelA->setText(tr("A侧连接状态")); + m_pLabelB->setText(tr("B侧连接状态")); + m_pLabelPLC->setText(tr("PLC连接状态")); + m_pLabelSystem->setText(tr("时间")); m_pLabelA->setAlignment(Qt::AlignCenter); m_pLabelB->setAlignment(Qt::AlignCenter); + m_pLabelPLC->setAlignment(Qt::AlignCenter); m_pLabelSystem->setAlignment(Qt::AlignCenter); ui.statusBar->addWidget(m_pLabelA, 50); ui.statusBar->addWidget(m_pLabelB, 50); + ui.statusBar->addWidget(m_pLabelPLC, 50); ui.statusBar->addPermanentWidget(m_pLabelSystem, 50); m_pLabelA->setText(""); m_pLabelB->setText(""); @@ -61,13 +72,45 @@ valueMainUI::valueMainUI(QWidget *parent) 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); + + QToolButton* pbutton = new QToolButton(this); + pbutton->setMenu(pToolMenu); + pbutton->setIcon(QIcon(":/Resources/Setting.png")); + pbutton->setText(tr("工具")); + pbutton->setToolTip(tr("工具")); + pbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + pbutton->setPopupMode(QToolButton::InstantPopup); + font.setBold(false); + font.setPixelSize(18); + pbutton->setFont(font); + ui.toolBar->addWidget(pbutton); + connect(ui.actionsettingA, SIGNAL(triggered()), this, SLOT(onButtonClicked())); connect(ui.actionsettingB, SIGNAL(triggered()), this, SLOT(onButtonClicked())); 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(); connect(m_pConfigUI, SIGNAL(sgUpdateConfig()), this, SLOT(onUpdateConfig())); @@ -79,6 +122,17 @@ valueMainUI::valueMainUI(QWidget *parent) m_timerStartID = startTimer(2000); onShowUI(lpConfig::instance()->doubleStation); + + m_pTcpDebugUI = new QTCPDebugUI(); + + {//PLC tcp 通讯 + m_pPlcDevice = new QPLCDevice(); + m_pPlcDevice->onInitDevice(); + m_pPlcDevice->onStartServer(lpConfig::instance()->plcServerPort); + connect(m_pPlcDevice, SIGNAL(sgTrigerCam(int)), this, SLOT(onPLCTrigerCam(int))); + connect(m_pPlcDevice, SIGNAL(sgSendDataCallBack(QByteArray)), this, SLOT(onShowSendTcpData(QByteArray))); + connect(m_pPlcDevice, SIGNAL(sgRecvDataCallBack(QByteArray)), this, SLOT(onShowRecvTcpData(QByteArray))); + } } valueMainUI::~valueMainUI() @@ -106,6 +160,26 @@ valueMainUI::~valueMainUI() delete tcp_client_ptr_B; tcp_client_ptr_B = nullptr; } + if (m_pPlcDevice) + { + delete m_pPlcDevice; + m_pPlcDevice = nullptr; + } + if (m_pDebugUI) + { + delete m_pDebugUI; + m_pDebugUI = nullptr; + } + if (m_pConfigUI) + { + delete m_pConfigUI; + m_pConfigUI = nullptr; + } + if (m_pTcpDebugUI) + { + delete m_pTcpDebugUI; + m_pTcpDebugUI = nullptr; + } } QString valueMainUI::SecondTimeString(quint64 value) @@ -160,9 +234,8 @@ Q_SLOT void valueMainUI::onRecvDataStr_A(const QJsonObject& json) { case 0://识别OK,定位OK { - ui.label_A->setText(tr("型号 %1,定位角度 %2°").arg(strName).arg(angle)); + ui.label_A->setText(tr("型号 %1,定位角度 %2 °").arg(strName).arg(angle)); ui.label_A->setStyleSheet("font: bold 14px;background-color: rgb(0, 170, 0);"); - } break; case 1://识别OK,定位异常 @@ -193,11 +266,29 @@ Q_SLOT void valueMainUI::onRecvDataStr_A(const QJsonObject& json) default: break; } + + ValueResult rlt; + rlt.stationID = 1; + rlt.angle = angle; + rlt.center = QPointF(cnt_x, cnt_y); + rlt.strModel = strName; + if (m_pPlcDevice) + { + m_pPlcDevice->onSendValueRlt(rlt); + } } else if (strcmd == "heartbit") { m_CoutA = 0; m_bServerA = true; + m_bRunStateA = json.value("runState").toBool(false); + } + else if (strcmd == "triggerAck") + { + if (m_pPlcDevice) + { + m_pPlcDevice->onAckTrigerCam(1); + } } } } @@ -264,11 +355,29 @@ Q_SLOT void valueMainUI::onRecvDataStr_B(const QJsonObject& json) default: break; } + + ValueResult rlt; + rlt.stationID = 2; + rlt.angle = angle; + rlt.center = QPointF(cnt_x, cnt_y); + rlt.strModel = strName; + if (m_pPlcDevice) + { + m_pPlcDevice->onSendValueRlt(rlt); + } } else if (strcmd == "heartbit") { m_CoutB = 0; m_bServerB = true; + m_bRunStateB = json.value("runState").toBool(false); + } + else if (strcmd == "triggerAck") + { + if (m_pPlcDevice) + { + m_pPlcDevice->onAckTrigerCam(2); + } } } } @@ -380,8 +489,8 @@ 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->setWindowModality(Qt::ApplicationModal); + //m_pDebugUI->setAttribute(Qt::WA_ShowModal, true); m_pDebugUI->show(); } @@ -396,6 +505,14 @@ Q_SLOT void valueMainUI::onButtonClicked() m_pConfigUI->show(); //check(); } + else if (strObj == "action_communicate") + { + m_pTcpDebugUI->setParent(this); + m_pTcpDebugUI->setWindowTitle(tr("通讯调试页面")); + m_pTcpDebugUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + m_pTcpDebugUI->setWindowIcon(QIcon(WINDOWICON)); + m_pTcpDebugUI->show(); + } } QJsonObject valueMainUI::byte2Json(QByteArray data) @@ -454,36 +571,63 @@ void valueMainUI::timerEvent(QTimerEvent *event) { if (m_bServerA == true) { - m_pLabelA->setText("A侧设备已连接"); - m_pLabelA->setStyleSheet("background-color: rgb(63, 170, 24);"); + if (m_bRunStateA == true) + { + m_pLabelA->setText(tr("A侧设备已连接(检测中)")); + m_pLabelA->setStyleSheet("background-color: rgb(63, 170, 24);"); + } + else { + m_pLabelA->setText(tr("A侧设备已连接(暂停中)")); + m_pLabelA->setStyleSheet("background-color: rgb(200, 200, 10);"); + } } else { - m_pLabelA->setText("A侧设备未连接"); - m_pLabelA->setStyleSheet(""); + m_pLabelA->setText(tr("A侧设备未连接")); + m_pLabelA->setStyleSheet("background-color: rgb(200, 10, 10);"); } if (lpConfig::instance()->doubleStation == true) { if (m_bServerB == true) { - m_pLabelB->setText("B侧设备已连接"); - m_pLabelB->setStyleSheet("background-color: rgb(63, 170, 24);"); + if (m_bRunStateB == true) + { + m_pLabelB->setText(tr("B侧设备已连接(检测中)")); + m_pLabelB->setStyleSheet("background-color: rgb(63, 170, 24);"); + } + else { + m_pLabelB->setText(tr("B侧设备已连接(暂停中)")); + m_pLabelB->setStyleSheet("background-color: rgb(200, 200, 10);"); + } } else { - m_pLabelB->setText("B侧设备未连接"); - m_pLabelB->setStyleSheet(""); + m_pLabelB->setText(tr("B侧设备未连接")); + m_pLabelB->setStyleSheet("background-color: rgb(200, 10, 10);"); } } else { m_pLabelB->setText(""); } - - + + if (m_pPlcDevice) + { + QString clientInfo; + bool bConnect = m_pPlcDevice->getClinetInfo(clientInfo); + if (bConnect == true) + { + QString plc = QString(tr("PLC客户端 %1").arg(clientInfo)); + m_pLabelPLC->setText(plc); + m_pLabelPLC->setStyleSheet("background-color: rgb(63, 170, 24);"); + } + else { + m_pLabelPLC->setText(tr("PLC客户端未连接")); + m_pLabelPLC->setStyleSheet("background-color: rgb(200, 200, 10);"); + } + } QString m_currentTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); QString strlong = SecondTimeString(m_tickCount); QString strTimeTitle = tr("运行时长:"); QString strShow = QString("%1 %2 %3").arg(m_currentTime).arg(strTimeTitle).arg(strlong); m_pLabelSystem->setText(strShow); - } } else if (m_timerStartID == event->timerId()) @@ -695,6 +839,27 @@ void valueMainUI::setMainWindowVisibility(bool state) else { m_restoreAction->setText(tr("显示界面")); hide(); + if (m_pTcpDebugUI) + { + if (!m_pTcpDebugUI->isHidden()) + { + m_pTcpDebugUI->hide(); + } + } + if (m_pConfigUI) + { + if (!m_pConfigUI->isHidden()) + { + m_pConfigUI->hide(); + } + } + if (m_pDebugUI) + { + if (!m_pDebugUI->isHidden()) + { + m_pDebugUI->hide(); + } + } } } @@ -823,3 +988,42 @@ void valueMainUI::onShowMainWindow() this->raise(); } } + +Q_SLOT void valueMainUI::onPLCTrigerCam(int camID) +{ + //onTriggerCam(); + if (camID == 1)//A侧相机触发拍照 + { + TP_PROTOCOL_MESSAGE msg; + QJsonObject sObj; + sObj.insert("cmd", "trigerCam"); + msg.body = sObj; + if (tcp_client_ptr_A) + tcp_client_ptr_A->ISendMessage(msg); + } + else if (camID == 2)//B侧相机拍照 + { + TP_PROTOCOL_MESSAGE msg; + QJsonObject sObj; + sObj.insert("cmd", "trigerCam"); + msg.body = sObj; + if (tcp_client_ptr_B) + tcp_client_ptr_B->ISendMessage(msg); + } +} + +Q_SLOT void valueMainUI::onShowRecvTcpData(QByteArray data) +{ + if (lpGlobalData::instance()->bShowRecv == true) + { + m_pTcpDebugUI->appendRecvData(data); + } +} + +Q_SLOT void valueMainUI::onShowSendTcpData(QByteArray data) +{ + if (lpGlobalData::instance()->bShowSend == true) + { + m_pTcpDebugUI->appendSendData(data); + } +} diff --git a/tpvs17/valueMainUI/valueMainUI.h b/tpvs17/valueMainUI/valueMainUI.h index a9f8501..87202eb 100644 --- a/tpvs17/valueMainUI/valueMainUI.h +++ b/tpvs17/valueMainUI/valueMainUI.h @@ -11,6 +11,8 @@ #include #include #include "libTcpClient.h" +#include "../QPLCDevice.h" +#include "QTCPDebugUI.h" class valueMainUI : public QMainWindow { Q_OBJECT @@ -58,6 +60,10 @@ private://trayIcon Q_SLOT void on_connected_B(); Q_SLOT void on_disconnected_B(); void onShowMainWindow(); + Q_SLOT void onPLCTrigerCam(int camID); + + Q_SLOT void onShowRecvTcpData(QByteArray data); + Q_SLOT void onShowSendTcpData(QByteArray data); protected: virtual void timerEvent(QTimerEvent *event); virtual void closeEvent(QCloseEvent *event); @@ -69,7 +75,13 @@ private: QLabel* m_pLabelA{ nullptr }; QLabel* m_pLabelB{ nullptr }; + QLabel* m_pLabelPLC{ nullptr }; QLabel* m_pLabelSystem{ nullptr }; + +// QLabel* m_pLabelRes_A{ nullptr }; +// QLabel* m_pLabelRes_B{ nullptr }; +// QLabel* m_pLabelState_A{ nullptr }; +// QLabel* m_pLabelState_B{ nullptr }; private: int m_timerA{ 0 }; int m_timerB{ 0 }; @@ -77,11 +89,14 @@ private: lpConfigUI *m_pConfigUI{ nullptr }; lpDebugUI *m_pDebugUI{ nullptr }; + QTCPDebugUI *m_pTcpDebugUI{ nullptr }; + int m_CoutA{ 0 }; int m_CoutB{ 0 }; bool m_bServerA{ false }; bool m_bServerB{ false }; - + bool m_bRunStateA{ false }; + bool m_bRunStateB{ false }; int m_SysTimerID{ 0 }; quint64 m_tickCount{ 0 }; @@ -95,6 +110,8 @@ private: QAction* m_restoreAction{ nullptr }; QAction* m_quitAction{ nullptr }; bool m_bExit{ false }; + + QPLCDevice* m_pPlcDevice{ nullptr }; }; #endif diff --git a/tpvs17/valueMainUI/valueMainUI.ui b/tpvs17/valueMainUI/valueMainUI.ui index 4ea1e96..c742878 100644 --- a/tpvs17/valueMainUI/valueMainUI.ui +++ b/tpvs17/valueMainUI/valueMainUI.ui @@ -51,7 +51,7 @@ QFrame::Raised - + @@ -64,7 +64,7 @@ - + @@ -136,7 +136,7 @@ QFrame::Raised - + @@ -149,7 +149,7 @@ - + @@ -206,8 +206,6 @@ - - @@ -220,6 +218,8 @@ 12 + 50 + false @@ -234,6 +234,8 @@ 12 + 50 + false @@ -271,6 +273,23 @@ + + + + :/Resources/Setting.png:/Resources/Setting.png + + + 通讯调试 + + + 通讯调试 + + + + 12 + + + diff --git a/tpvs17/valueMainUI/valueMainUI.vcxproj b/tpvs17/valueMainUI/valueMainUI.vcxproj index 95336c4..c593f1c 100644 --- a/tpvs17/valueMainUI/valueMainUI.vcxproj +++ b/tpvs17/valueMainUI/valueMainUI.vcxproj @@ -53,7 +53,7 @@ true UNICODE;_UNICODE;WIN32;WIN64;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WEBSOCKETS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_NETWORK_LIB;%(PreprocessorDefinitions) - .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;%(AdditionalIncludeDirectories) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain;.\..\..\tpvs17\tpMain\lpRawTcp;%(AdditionalIncludeDirectories) Disabled ProgramDatabase MultiThreadedDebugDLL @@ -69,7 +69,7 @@ .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp Moc'ing %(Identity)... - .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;%(AdditionalIncludeDirectories) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain;.\..\..\tpvs17\tpMain\lpRawTcp;%(AdditionalIncludeDirectories) UNICODE;_UNICODE;WIN32;WIN64;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WEBSOCKETS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_NETWORK_LIB;%(PreprocessorDefinitions) @@ -85,7 +85,7 @@ true UNICODE;_UNICODE;WIN32;WIN64;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WEBSOCKETS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_NETWORK_LIB;%(PreprocessorDefinitions) - .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;%(AdditionalIncludeDirectories) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain;.\..\..\tpvs17\tpMain\lpRawTcp;%(AdditionalIncludeDirectories) MultiThreadedDLL true @@ -100,7 +100,7 @@ .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp Moc'ing %(Identity)... - .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;%(AdditionalIncludeDirectories) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain;.\..\..\tpvs17\tpMain\lpRawTcp;%(AdditionalIncludeDirectories) UNICODE;_UNICODE;WIN32;WIN64;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WEBSOCKETS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_NETWORK_LIB;%(PreprocessorDefinitions) @@ -121,11 +121,17 @@ + + + + + + @@ -136,6 +142,7 @@ + @@ -151,6 +158,19 @@ + + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include + + + + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;E:\wheelValve\src\tpMain + + + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;E:\wheelValve\src\tpMain + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets @@ -159,6 +179,14 @@ .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase + + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain;.\..\..\tpvs17\tpMain\lpRawTcp + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;E:\wheelValve\src\tpMain + + + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain;.\..\..\tpvs17\tpMain\lpRawTcp + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;E:\wheelValve\src\tpMain + diff --git a/tpvs17/valueMainUI/valueMainUI.vcxproj.filters b/tpvs17/valueMainUI/valueMainUI.vcxproj.filters index a44a951..670a80c 100644 --- a/tpvs17/valueMainUI/valueMainUI.vcxproj.filters +++ b/tpvs17/valueMainUI/valueMainUI.vcxproj.filters @@ -31,6 +31,9 @@ {b528bd13-2709-4bfb-ae7d-6beffda08cc3} + + {6b2afa7b-bb76-4d9e-9870-8a19fb08089a} + @@ -81,6 +84,24 @@ Source Files + + Source Files + + + Source Files + + + lpRawTcp + + + lpRawTcp + + + Source Files + + + Source Files + @@ -110,6 +131,18 @@ Header Files + + Header Files + + + lpRawTcp + + + lpRawTcp + + + Header Files + @@ -121,6 +154,9 @@ Form Files + + Form Files + @@ -146,6 +182,12 @@ Header Files + + Header Files + + + Header Files +