From 38f8a562758a932b2b3015696a5306f78c0044f3 Mon Sep 17 00:00:00 2001 From: "15089880081@163.com" <15089880081@163.com> Date: Thu, 23 May 2024 15:06:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=87=8D=E8=AF=95=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hd_mvcamera_module.cpp | 12 +- BaseModules/Hd_SocketModule_ModbusTcp (2).zip | Bin 0 -> 12939 bytes .../Hd_SocketModule_ModbusTcp.cpp | 49 ++++--- .../Hd_SocketModule_ModbusTcp.h | 73 +++++----- .../HandleAiUi-new/back/backEndManager.cpp | 22 ++- .../HandleAiUi-new/back/backEndManager.h | 22 ++- .../HandleAiUi-new/back/cameraManager.cpp | 7 + HanddleAI/HandleAiUi-new/back/cameraManager.h | 2 +- .../HandleAiUi-new/back/triggerManager.cpp | 28 +++- .../HandleAiUi-new/back/triggerManager.h | 8 +- .../HandleAiUi-new/front/loadingWidget.h | 131 ++++++++++-------- HanddleAI/HandleAiUi-new/globalStruct.h | 8 +- HanddleAI/HandleAiUi-new/icon.qrc | 1 + HanddleAI/HandleAiUi-new/icon/error.png | Bin 0 -> 4232 bytes HanddleAI/HandleAiUi-new/main.cpp | 3 + HanddleAI/HandleAiUi-new/mainwindow.cpp | 6 +- HanddleAI/HandleAiUi-new/mainwindow.h | 34 +++-- 17 files changed, 250 insertions(+), 156 deletions(-) create mode 100644 BaseModules/Hd_SocketModule_ModbusTcp (2).zip create mode 100644 HanddleAI/HandleAiUi-new/icon/error.png diff --git a/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp b/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp index 6de38fbb..e7bb55f8 100644 --- a/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp +++ b/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp @@ -1,6 +1,6 @@ #include "hd_mvcamera_module.h" std::mutex moduleMutex;//掉线é”� - +unsigned int nRet; QByteArray MV_CC_DeviceInfoListToQByteArray(const MV_CC_DEVICE_INFO_LIST& deviceInfoList) { QByteArray byteArray; byteArray.resize(sizeof(MV_CC_DEVICE_INFO_LIST)); @@ -235,7 +235,7 @@ bool Hd_MvCamera_module::sendData(std::vector& mat, QByteArray& data) { QString inputString = QString::fromUtf8(data); - if (data == "connect") + if (data == "getStatus") { data = mv_Status; return true; @@ -292,12 +292,16 @@ bool Hd_MvCamera_module::initParas(QByteArray&) MV_CC_StopGrabbing(handle); MV_CC_CloseDevice(handle); MV_CC_DestroyHandle(handle); - return false; + //return false; } //打开相机 - unsigned int nRet = MV_CC_CreateHandle(&handle, m_stDevList.pDeviceInfo[index]); + nRet = MV_CC_CreateHandle(&handle, m_stDevList.pDeviceInfo[index]); + if (nRet != 0) + mv_Status = u8"å�¥æŸ„创建失败MV_CC_CreateHandle"+ QByteArray::number(nRet, 16).toUpper(); nRet = MV_CC_OpenDevice(handle); + if (nRet != 0) + mv_Status = u8"打开设备失败MV_CC_OpenDevice"+ QByteArray::number(nRet, 16).toUpper(); ////触å�‘模å¼� nRet = MV_CC_SetEnumValue(handle, "TriggerSource", MV_TRIGGER_SOURCE_SOFTWARE); nRet = MV_CC_SetEnumValue(handle, "TriggerMode", MV_TRIGGER_MODE_ON); diff --git a/BaseModules/Hd_SocketModule_ModbusTcp (2).zip b/BaseModules/Hd_SocketModule_ModbusTcp (2).zip new file mode 100644 index 0000000000000000000000000000000000000000..6ae1e8df9954f9f11fb977d0c3a45a85d13caeb5 GIT binary patch literal 12939 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 Bla>Gg literal 0 HcmV?d00001 diff --git a/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.cpp b/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.cpp index bb9c6f1a..54d354fc 100644 --- a/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.cpp +++ b/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.cpp @@ -108,21 +108,22 @@ QString Hd_SocketModule_ModbusTcp::ShortToHex(int value) Hd_SocketModule_ModbusTcp::Hd_SocketModule_ModbusTcp() { m_Mutex = new QMutex; - m_Thread = new MyThread(this); - m_Thread->setMutexLock(m_Mutex); + //m_Thread = new MyThread(this); + m_Thread.setMutexLock(m_Mutex); } Hd_SocketModule_ModbusTcp::~Hd_SocketModule_ModbusTcp() { - m_Thread->setRunStop(); - m_Thread->wait(); - m_Thread->quit(); - if (m_Thread) - { - qDebug() << "[INFO] "<< "~m_Thread()"; - delete m_Thread; - m_Thread = nullptr; - } + m_Thread.setRunStop(); + m_Thread.wait(); + m_Thread.quit(); + m_Thread.terminate(); + //if (m_Thread) + //{ + // qDebug() << "[INFO] "<< "~m_Thread()"; + // delete m_Thread; + // m_Thread = nullptr; + //} qDebug() << "[INFO] " << "~Hd_SocketModule_ModbusTcp success!"; } @@ -395,8 +396,8 @@ bool Hd_SocketModule_ModbusTcp::initParas(QByteArray& data) qDebug() << "[TCP] " << "list: " << list; setSleepTimeAndReadNum(sleepvalue.toInt(), readvalue.toInt()); - m_Thread->setSocketIp(m_Station); - if (!m_Thread->setIpAndPort(m_IP, m_host)) + m_Thread.setSocketIp(m_Station); + if (!m_Thread.setIpAndPort(m_IP, m_host)) { qDebug() << "[TCP] " << "m_IP:" << m_IP << " m_host:" << m_host << " connectToHost failed!"; return false; @@ -406,13 +407,17 @@ bool Hd_SocketModule_ModbusTcp::initParas(QByteArray& data) //å¼€å�¯è¯»PLCæ•°æ�®çš„客户端 //å¼€å�¯socket //第一次è¿�行,创建socket对象,å�Žé�¢å�‘一次æ�¡æ‰‹æŠ¥æ–‡ - m_Thread->start(); - Sleep(500); - - if (!m_Thread->getInitSuccessFlag()) + m_Thread.start(); + int cnt = 0; + while (!m_Thread.getInitSuccessFlag()) { - qCritical() << "[TCP] " << "TCP init failed!"; - return false; + QThread::msleep(100); + cnt++; + if(cnt>50) + { + qCritical() << "[TCP] " << "TCP init failed!"; + return false; + } } //// å�‘é€�æ�¡æ‰‹æŒ‡ä»¤ @@ -421,7 +426,7 @@ bool Hd_SocketModule_ModbusTcp::initParas(QByteArray& data) //WritePLCPack.append(array); // å¼€å�¯çº¿ç¨‹å¾ªçޝ - m_Thread->start(); + m_Thread.start(); return true; } @@ -434,7 +439,7 @@ bool Hd_SocketModule_ModbusTcp::run() void Hd_SocketModule_ModbusTcp::setSleepTimeAndReadNum(int time, int num) { m_sleepTime = time; - m_Thread->setReadPackValue(num); + m_Thread.setReadPackValue(num); } ////写å�•个寄存器指令,å°�装为报文 //bool Hd_SocketModule_ModbusTcp::writeCommond(QString DM, QString Num) @@ -923,7 +928,6 @@ MyThread::~MyThread() delete m_mutex_lock; m_mutex_lock = nullptr; } - std::exit(EXIT_SUCCESS); } @@ -998,6 +1002,7 @@ void MyThread::run() if (rtn == HDTcpStatus::Success) { qWarning() << "[TCP] " << " You have connected to the server "; + init_success = true; } else { diff --git a/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.h b/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.h index 66118cc3..27f72da6 100644 --- a/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.h +++ b/BaseModules/Hd_SocketModule_ModbusTcp/Hd_SocketModule_ModbusTcp.h @@ -17,8 +17,41 @@ #pragma comment(lib,"./HslComunnicationCpp.lib") #include "base.h" -class MyThread; + class writeThread; +class MyThread : public QThread +{ + Q_OBJECT +public: + MyThread() {}; + ~MyThread(); + bool setIpAndPort(QString ip, QString port); + void run(); + void readSocketData(); //读å�–æ•°æ�® + void writeSocketData(); //写入数æ�® + void decodePack(); + void setMutexLock(QMutex* lock) { m_mutex_lock = lock; } + void setRunStop() { init_flag = 2; } + void setReadPackValue(int value); + void closeSocket(); + bool getInitSuccessFlag() { return init_success; } + bool disReconnects(); + void setSocketIp(QString Station) { m_Station = Station; } +private: + QString m_IP; + QString m_Port; + QString m_Station; + QMutex m_Mutex; + QByteArray reciveData; + QString socketIp; + bool init_success = false; // åˆ�始化æˆ�功 返回true;失败返回false + int init_flag = 0; // false为完整数æ�®åŒ…,true为é�žå®Œæ•´æ•°æ�®åŒ… + int m_readPackValue = 122; // 接å�—50个数æ�®åŒ…的长度 为 122 ,加包头一起为 130, 如果是 100çš„è¯�就是 222 加包头为230 + QMutex* m_mutex_lock = nullptr; + //QTcpSocket *tcpsocket = nullptr; // tcp通信的socket + HDTcpBase* tcpsocket = nullptr; +}; + class Hd_SocketModule_ModbusTcp :public Base { Q_OBJECT @@ -75,43 +108,7 @@ private: //MyThread *m_Thread = nullptr; //QTcpSocket* tcpsocket = nullptr; //tcp通信的socket QMutex* m_Mutex = nullptr; - MyThread* m_Thread = nullptr; -}; - - - -//自己创建线程 -class MyThread : public QThread -{ - Q_OBJECT -public: - explicit MyThread(QObject *parent = nullptr):QThread(parent){} - ~MyThread(); - bool setIpAndPort(QString ip,QString port); - void run(); - void readSocketData(); //读å�–æ•°æ�® - void writeSocketData(); //写入数æ�® - void decodePack(); - void setMutexLock(QMutex* lock) { m_mutex_lock = lock; } - void setRunStop(){ init_flag = 2;} - void setReadPackValue(int value); - void closeSocket(); - bool getInitSuccessFlag(){return init_success;} - bool disReconnects(); - void setSocketIp(QString Station) { m_Station = Station; } -private: - QString m_IP; - QString m_Port; - QString m_Station; - QMutex m_Mutex; - QByteArray reciveData; - QString socketIp; - bool init_success = true; // åˆ�始化æˆ�功 返回true;失败返回false - int init_flag = 0; // false为完整数æ�®åŒ…,true为é�žå®Œæ•´æ•°æ�®åŒ… - int m_readPackValue = 122; // 接å�—50个数æ�®åŒ…的长度 为 122 ,加包头一起为 130, 如果是 100çš„è¯�就是 222 加包头为230 - QMutex* m_mutex_lock = nullptr; - //QTcpSocket *tcpsocket = nullptr; // tcp通信的socket - HDTcpBase* tcpsocket = nullptr; + MyThread m_Thread; }; extern "C" diff --git a/HanddleAI/HandleAiUi-new/back/backEndManager.cpp b/HanddleAI/HandleAiUi-new/back/backEndManager.cpp index f260a5e7..f6ecb96c 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/backEndManager.cpp @@ -14,18 +14,34 @@ backEndManager::backEndManager() } void backEndManager::run() { - if(isinit ==false) + if(isInit == ReInit) { + if (_cameraManager != nullptr) + delete _cameraManager; + if (_triggerManager != nullptr) + delete _triggerManager; + + _triggerManager = new triggerManager(); + _cameraManager = new cameraManager(); + isInit = NotInit; + } + if(isInit == NotInit) + { + std::vector> futures;//Òì²½³õʼ»¯ futures.push_back(std::async(std::launch::async, &triggerManager::init, _triggerManager, this)); futures.push_back(std::async(std::launch::async, &cameraManager::init, _cameraManager, this)); for (auto& future : futures) { future.wait(); } - isinit = true; - sendInitFinished(true); + if (_triggerManager->isInit == true && _cameraManager->isInit == true) + isInit = InitOK; + else + isInit = InitFailure; + sendInitFinished(isInit); } } + backEndManager::~backEndManager() { _triggerManager->stop(); diff --git a/HanddleAI/HandleAiUi-new/back/backEndManager.h b/HanddleAI/HandleAiUi-new/back/backEndManager.h index ecbd54f4..c9256542 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndManager.h +++ b/HanddleAI/HandleAiUi-new/back/backEndManager.h @@ -13,28 +13,36 @@ class backEndManager :public QThread { Q_OBJECT public: + initStatus isInit = NotInit; QMutex mutex; //Êý¾ÝÀà - jsonConfiguration* _jsonConfiguration; - detDataManager* _detDataManager; + jsonConfiguration* _jsonConfiguration = nullptr; + detDataManager* _detDataManager = nullptr; //Ïß³ÌÀà - triggerManager* _triggerManager;//´¥·¢Æ÷ - cameraManager* _cameraManager;// - threadManager* _threadManager; + triggerManager* _triggerManager = nullptr;//´¥·¢Æ÷ + cameraManager* _cameraManager = nullptr;// + threadManager* _threadManager = nullptr; backEndManager(); ~backEndManager(); void init() { + isInit = NotInit; this->start(); } void run(); +public slots: + void reInitSlot() + { + isInit = ReInit; + this->start(); + } private: - bool isinit = false; + signals: void sendErrorToMainwindow(backEndError); void sendPixmapImageWidget(showImgPack*); - void sendInitFinished(bool); + void sendInitFinished(int); void sendInitString(QString);//³õʼ»¯ÈÕÖ¾ }; #endif \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/cameraManager.cpp b/HanddleAI/HandleAiUi-new/back/cameraManager.cpp index dc149f20..59309b3f 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/cameraManager.cpp @@ -189,10 +189,17 @@ void cameraManager::init(backEndManager* input) camera* _camera = new camera(m_module,_backEndManager, cameras.size()); QObject::connect(_camera, &camera::S1, this, &cameraManager::R1); cameras.insert(std::make_pair(m_module.key.toStdString(), _camera)); + emit _backEndManager->sendInitString("Ïà»ú"+m_module.key + "³õʼ»¯³É¹¦"); qDebug() << "[INFO] " << " initParas success!"; } else + { + QByteArray errorStr("getStatus"); + m_module.module_ptr->sendData(vec_mat,errorStr); + isInit = false; qCritical() << "[Error] " << " moduleName:" << m_module.moduleName << " initParas failed!"; + emit _backEndManager->sendInitString("Ïà»ú" + m_module.key + "³õʼ»¯Ê§°Ü->"+ errorStr); + } } this->start(); diff --git a/HanddleAI/HandleAiUi-new/back/cameraManager.h b/HanddleAI/HandleAiUi-new/back/cameraManager.h index ac7afb83..1e881ac8 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraManager.h +++ b/HanddleAI/HandleAiUi-new/back/cameraManager.h @@ -126,7 +126,7 @@ public: camera.second->stop(); this->terminate(); } - + bool isInit = true; private: bool loadModule(QString keyName, QString moduleName, QByteArray initByte); backEndManager* _backEndManager; diff --git a/HanddleAI/HandleAiUi-new/back/triggerManager.cpp b/HanddleAI/HandleAiUi-new/back/triggerManager.cpp index 96d7d522..f8c9e156 100644 --- a/HanddleAI/HandleAiUi-new/back/triggerManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/triggerManager.cpp @@ -4,10 +4,11 @@ #include #include #include +#define debugTesting 1 static correctionStruct* correctionData; void triggerManager::decodeCameraCMD(QByteArray byte) { - +#if debugTesting //if (checkTrigger(1, 2, byte) == true) { std::shared_ptr data = dManager->insertDetData("Camera1", "Thread3", "TEST", 0); @@ -27,7 +28,8 @@ void triggerManager::decodeCameraCMD(QByteArray byte) camera->second->Process(data); } return; -#if 0 +#endif +#if debugTesting == 0 if (byte.isEmpty()) return; double cameraData = 0; @@ -164,11 +166,17 @@ void triggerManager::init(backEndManager* input) dManager = _backEndManager->_detDataManager; _cameraManager = _backEndManager->_cameraManager; _threadManager = _backEndManager->_threadManager; + _jsonConfiguration = _backEndManager->_jsonConfiguration; + + triggerFileName = _jsonConfiguration->tcp.moduleName; + IpAndPort = _jsonConfiguration->tcp.finstcp_init; + //triggerInitStr = QByteArray("sleeptime_%1_readnum_%2_writetype_ushort"); QLibrary* m_lib = new QLibrary(triggerFileName); bool flag = m_lib->load(); if (!m_lib->isLoaded()) { - emit _backEndManager->sendErrorToMainwindow(dllNotFound); + //emit _backEndManager->sendErrorToMainwindow(dllNotFound); + emit _backEndManager->sendInitString("ÕÒ²»µ½"+triggerFileName); return; } @@ -176,22 +184,28 @@ void triggerManager::init(backEndManager* input) { CreateFunction createFun = (CreateFunction)m_lib->resolve("create"); ReleaseFunction releaseFun = (ReleaseFunction)m_lib->resolve("destory"); + bool initFailure = false; if (createFun && releaseFun) { trigger = createFun(); destory_finstcp = releaseFun; QByteArray initByte = QByteArray::fromStdString("sleeptime_20_readnum_300_writetype_ushort"); - std::vector dddd; - trigger->reciveData(dddd, QByteArray::fromStdString("init_127.0.0.1_502_1")); - trigger->initParas(initByte); + trigger->reciveData(vec_mat, QByteArray(IpAndPort.toUtf8())); + emit _backEndManager->sendInitString(triggerFileName + "Á¬½Óµ½" + IpAndPort); + initFailure=trigger->initParas(initByte); } - else + + if(initFailure==false) { emit _backEndManager->sendErrorToMainwindow(triggerInitFailure); delete m_lib; m_lib = nullptr; + isInit = false; + emit _backEndManager->sendInitString(triggerFileName + "³õʼ»¯Ê§°Ü"); return; } + else + emit _backEndManager->sendInitString(triggerFileName + "³É¹¦"); } this->start(); } diff --git a/HanddleAI/HandleAiUi-new/back/triggerManager.h b/HanddleAI/HandleAiUi-new/back/triggerManager.h index 1eafdf85..a8945385 100644 --- a/HanddleAI/HandleAiUi-new/back/triggerManager.h +++ b/HanddleAI/HandleAiUi-new/back/triggerManager.h @@ -65,10 +65,14 @@ private: class triggerManager : public QThread { public: - QString triggerFileName = QString("Hd_SocketModule_ModbusTcp"); + QString triggerFileName; + QString IpAndPort; + QString triggerInitStr; ~triggerManager() { runFlag = false; + this->stop(); + this->terminate(); delete trigger; } void init(backEndManager* input); @@ -136,11 +140,13 @@ public: } int getValue(int dmPos, QByteArray byte); + bool isInit = true; private: threadManager* _threadManager; detDataManager* dManager; backEndManager* _backEndManager; cameraManager* _cameraManager; + jsonConfiguration* _jsonConfiguration; triggerLockerT tLocker;//·ÀÖ¹ÖØ¸´´¥·¢,ÿ´ÎÊÕµ½Êý¾Ýʱ¼ì²éÊý¾ÝÊÇ·ñÓëÉÏ´ÎÏàͬ£¬Èç¹ûÏàͬcheckTrigger»á·µ»Øfalse /// /// ¼ì²âQByteArrayÖÐijλÖõÄÖµÊÇ·ñºÍÊäÈëÒ»Ñù£¬Ê¹ÓÃÁ˾ø¶ÔλÖà diff --git a/HanddleAI/HandleAiUi-new/front/loadingWidget.h b/HanddleAI/HandleAiUi-new/front/loadingWidget.h index fd36714b..5ce66bdf 100644 --- a/HanddleAI/HandleAiUi-new/front/loadingWidget.h +++ b/HanddleAI/HandleAiUi-new/front/loadingWidget.h @@ -6,28 +6,30 @@ #include #include ; #include -static QPixmap cvMatToQPixmap(const cv::Mat& mat) { - QImage qImg; - if (mat.channels() == 3) { - //cv::cvtColor(mat, mat, cv::COLOR_BGR2RGB); - qImg = QImage(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_RGB888); - } - else { - qImg = QImage((const unsigned char*)(mat.data), mat.cols, mat.rows, mat.step, QImage::Format_Grayscale8); - } - return QPixmap::fromImage(qImg); -} +#include +class MainWindow; class loadingWidget : public QWidget { public: - QLabel* sign; - QMovie* movie; - QTextEdit* initLog; + bool isRunning = false; + QLabel* sign = nullptr; + QMovie* movie = nullptr; + QTextEdit* initLog = nullptr; + fancyButtonText* retryBtn = new fancyButtonText(100,50,"ÖØÊÔ","ÖØÐ½øÐгõʼ»¯"); QGridLayout* glayout = new QGridLayout(this); - loadingWidget(QWidget* parent = nullptr) : QWidget(parent) { - glayout->setAlignment(Qt::AlignCenter); - } - void start(QWidget* widget) + QVBoxLayout* vlayout = new QVBoxLayout(this); + loadingWidget() { + glayout->setAlignment(Qt::AlignCenter); + connect(retryBtn, &QPushButton::clicked, [=]() + { + retryBtn->setDisabled(true); + start(); + }); + } + void start() + { + if (isRunning == true) + stop(); QPalette palette; palette.setColor(QPalette::WindowText, Qt::white); sign = new QLabel(this); @@ -48,54 +50,73 @@ public: QFont font("΢ÈíÑźÚ", 8); initLog->setFont(font); - //initLog->setPalette(palette); - //initLog->setTextColor(QString("rgb(%1)").arg(sColor_Gold)); // ÉèÖÃÎÄ×ÖÑÕɫΪÀ¶É« initLog->setTextColor(Qt::white); - initLog->append("²âÊÔ²âÊÔ"); + initLog->append("ÕýÔÚ³õʼ»¯..."); + + vlayout->addWidget(initLog); + vlayout->addWidget(retryBtn); + retryBtn->hide(); + glayout->addWidget(sign, 0, 0); - glayout->addWidget(initLog, 1, 0); + glayout->addLayout(vlayout, 1, 0); glayout->setRowStretch(0, 5); glayout->setRowStretch(1, 4); - screenshot_ = QPixmap::grabWindow(widget->winId()); + //screenshot_ = QPixmap::grabWindow(widget->winId()); update(); // ¸üÐÂwidgetÒÔÏÔʾеĽØÍ¼ - + isRunning = true; } void stop() { + if (isRunning == false) + return; + isRunning = false; delete sign; - delete movie; + if (movie != nullptr) + delete movie; + delete initLog; + + sign = nullptr; + movie = nullptr; + initLog = nullptr; + } + void setError() + { + if (isRunning == true) + { + if (movie != nullptr) + delete movie; + movie = nullptr; + sign->setPixmap(QPixmap(":/topBar/icon/error.png")); + retryBtn->show(); + retryBtn->setEnabled(true); + } } protected: - void paintEvent(QPaintEvent* event) override { - //if (screenshot_.isNull()) - // return; - //QImage image = screenshot_.toImage(); - //image = image.convertToFormat(QImage::Format_RGB888); - //cv::Mat originalMat = cv::Mat( - // image.height(), - // image.width(), - // CV_8UC3, - // image.bits(), - // image.bytesPerLine()); - //cv::Mat blurredMat; - //cv::blur(originalMat, blurredMat, cv::Size(10, 10)); // µ÷ÕûÄ£ºý°ë¾¶ÒÔ»ñµÃ²»Í¬³Ì¶ÈµÄÄ£ºýЧ¹û - //QPixmap blurredPixmap = cvMatToQPixmap(blurredMat); - //QPainter painter(this); - //painter.drawPixmap(0, 0, blurredPixmap); - QWidget::paintEvent(event); // µ÷Óø¸ÀàµÄ paintEvent º¯Êý£¬»æÖƿؼþ±¾Éí - //// ÔÚÄ£ºýͼƬÉÏ»æÖÆÎÄ×Ö - //QPalette palette; - //palette.setColor(QPalette::WindowText, Qt::white); - //QFont font("΢ÈíÑźÚ", 100, QFont::Bold); - //QFont font2("΢ÈíÑźÚ", 90, QFont::Bold); - //painter.setFont(font); - //painter.setPen(Qt::black); - //painter.drawText(this->rect(), Qt::AlignCenter, "WAIT"); - //painter.setFont(font2); - //painter.setPen(Qt::white); - //painter.drawText(this->rect(), Qt::AlignCenter, "WAIT"); - } +#if 0 + //void paintEvent(QPaintEvent* event) override { + // if (paintOnce == false) + // return; + // if (screenshot_.isNull()) + // return; + // paintOnce = false; + // QImage image = screenshot_.toImage(); + // image = image.convertToFormat(QImage::Format_RGB888); + // cv::Mat originalMat = cv::Mat( + // image.height(), + // image.width(), + // CV_8UC3, + // image.bits(), + // image.bytesPerLine()); + // cv::Mat blurredMat; + // cv::blur(originalMat, blurredMat, cv::Size(10, 10)); // µ÷ÕûÄ£ºý°ë¾¶ÒÔ»ñµÃ²»Í¬³Ì¶ÈµÄÄ£ºýЧ¹û + // QPixmap blurredPixmap = cvMatToQPixmap(blurredMat); + // QPainter painter(this); + // painter.drawPixmap(0, 0, blurredPixmap); + // //QWidget::paintEvent(event); // µ÷Óø¸ÀàµÄ paintEvent º¯Êý£¬»æÖƿؼþ±¾Éí + //} +#endif private: QPixmap screenshot_; -}; \ No newline at end of file +}; +#pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/globalStruct.h b/HanddleAI/HandleAiUi-new/globalStruct.h index f23dde42..39e0d776 100644 --- a/HanddleAI/HandleAiUi-new/globalStruct.h +++ b/HanddleAI/HandleAiUi-new/globalStruct.h @@ -23,7 +23,13 @@ enum backEndError triggerConnectionError, camerInitFailure }; - +enum initStatus +{ + NotInit, + InitFailure, + InitOK, + ReInit +}; enum imgWidgetShowType { imgWidgetOri, diff --git a/HanddleAI/HandleAiUi-new/icon.qrc b/HanddleAI/HandleAiUi-new/icon.qrc index d337b9a2..ad35f767 100644 --- a/HanddleAI/HandleAiUi-new/icon.qrc +++ b/HanddleAI/HandleAiUi-new/icon.qrc @@ -32,5 +32,6 @@ icon/waitting.png icon/loading.gif icon/sql.png + icon/error.png diff --git a/HanddleAI/HandleAiUi-new/icon/error.png b/HanddleAI/HandleAiUi-new/icon/error.png new file mode 100644 index 0000000000000000000000000000000000000000..46f2a22e0ed89fa030453c7a66edbceaaf257fd1 GIT binary patch literal 4232 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 literal 0 HcmV?d00001 diff --git a/HanddleAI/HandleAiUi-new/main.cpp b/HanddleAI/HandleAiUi-new/main.cpp index 0ea92011..a9388e0a 100644 --- a/HanddleAI/HandleAiUi-new/main.cpp +++ b/HanddleAI/HandleAiUi-new/main.cpp @@ -18,6 +18,9 @@ void connectSignalAndSlots(MainWindow* front, backEndManager* back) QObject::connect(back, &backEndManager::sendPixmapImageWidget, front, &MainWindow::recvPixmapImageWidget); QObject::connect(back, &backEndManager::sendInitString, front, &MainWindow::recvInitString); QObject::connect(back, &backEndManager::sendInitFinished, front, &MainWindow::recvInitFinished); + + QObject::connect(front, &MainWindow::reInitSignal, back, &backEndManager::reInitSlot); + QObject::connect(front->_loadingWidget.retryBtn, &QPushButton::clicked, back, &backEndManager::reInitSlot); } int main(int argc, char* argv[]) { diff --git a/HanddleAI/HandleAiUi-new/mainwindow.cpp b/HanddleAI/HandleAiUi-new/mainwindow.cpp index d075136b..80f92d0d 100644 --- a/HanddleAI/HandleAiUi-new/mainwindow.cpp +++ b/HanddleAI/HandleAiUi-new/mainwindow.cpp @@ -118,11 +118,6 @@ void MainWindow::topBarInit() iconLabel->setFixedWidth(buttonWidth); iconLabel->setFixedWidth((buttonWidth/2)* title.size()); iconLabel->setPalette(palette); - //QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect(iconLabel); - //effect->setColor(Qt::white); - //effect->setBlurRadius(20); - //effect->setOffset(0); - //iconLabel->setGraphicsEffect(effect); // ÓÒ²à //×îС»¯ @@ -175,6 +170,7 @@ void MainWindow::topBarInit() QObject::connect(exitButton, &QPushButton::clicked, this, &QApplication::quit); // µã»÷Í˳ö°´Å¥Í˳öÓ¦ÓóÌÐò // ½«²Ëµ¥À¸Ìí¼Óµ½MainWindowµÄ²¼¾ÖÖÐ this->setMenuWidget(menuBarWidget); + _loadingWidget.start(); } void MainWindow::leftBarInit() diff --git a/HanddleAI/HandleAiUi-new/mainwindow.h b/HanddleAI/HandleAiUi-new/mainwindow.h index 407071eb..0e393bc2 100644 --- a/HanddleAI/HandleAiUi-new/mainwindow.h +++ b/HanddleAI/HandleAiUi-new/mainwindow.h @@ -34,8 +34,6 @@ class MainWindow : public QMainWindow public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); -private: - Ui::MainWindow *ui; //主è¦�控件 std::vectorpageBtns; QStackedWidget stackedWidgets;//一共三层,加载界é�¢ï¼Œç™»å½•界é�¢ï¼Œä¸»è¦�界é�¢ @@ -47,7 +45,8 @@ private: displayWidget* _displayWidget; configSettingWidget* _configSettingWidget; logWidget* _logWidget; - +private: + Ui::MainWindow* ui; //动画效果 QGraphicsBlurEffect* blurEffect; QPropertyAnimation* blurEffectAnimation; @@ -111,7 +110,7 @@ public slots: blurEffectAnimation->setStartValue(0); blurEffectAnimation->setEndValue(20); blurEffectAnimation->start(); - _loadingWidget.start(&stackedWidgets); + //_loadingWidget.start(); stackedWidgets.setCurrentIndex(1); blurEffectAnimation->setStartValue(0); blurEffectAnimation->setEndValue(0); @@ -136,17 +135,29 @@ public slots: _displayWidget->_ImageWidgetManager.showImg(pack->img, pack->type, pack->index); delete pack; } - void recvInitFinished(bool input) + void recvInitFinished(int input) { - backEndInit = true; - //loading(false); + switch (input) + { + case initStatus::InitOK: + backEndInit = true; + loading(false); + break; + default: + _loadingWidget.setError(); + backEndInit = false; + } } - void recvInitString(QString) + void recvInitString(QString strIn) { + if (_loadingWidget.isRunning != false); + { + _loadingWidget.initLog->append(strIn); + } + } - } signals: - + void reInitSignal(); protected: void mousePressEvent(QMouseEvent* event) override { if (event->buttons() == Qt::LeftButton) { @@ -158,8 +169,7 @@ protected: } void mouseMoveEvent(QMouseEvent* event) override { if (event->buttons() == Qt::LeftButton && isMoving) { - QPoint delta = event->globalPos() - startPos; - move(startFrameGeometry.topLeft() + delta); + move(startFrameGeometry.topLeft() + (event->globalPos() - startPos)); } QMainWindow::mouseMoveEvent(event); }