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 00000000..6ae1e8df Binary files /dev/null and b/BaseModules/Hd_SocketModule_ModbusTcp (2).zip differ 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 00000000..46f2a22e Binary files /dev/null and b/HanddleAI/HandleAiUi-new/icon/error.png differ 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); }