From 323cc25cf7c5748e6dd4310f55f5763d85f342fb Mon Sep 17 00:00:00 2001 From: RCi <15089880081@163.com> Date: Wed, 22 May 2024 01:32:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=99=A8=E4=B8=8E=E7=9B=B8?= =?UTF-8?q?=E6=9C=BA=E8=81=94=E5=8A=A8=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HandleAiUi-new/back/algorithmThread.cpp | 12 +- .../HandleAiUi-new/back/algorithmThread.h | 12 +- .../HandleAiUi-new/back/backEndManager.cpp | 3 +- .../HandleAiUi-new/back/backEndManager.h | 6 +- .../HandleAiUi-new/back/cameraManager.cpp | 106 +++++++++++------- HanddleAI/HandleAiUi-new/back/cameraManager.h | 20 +++- HanddleAI/HandleAiUi-new/back/myiothread.cpp | 2 +- HanddleAI/HandleAiUi-new/back/myiothread.h | 2 +- .../HandleAiUi-new/back/threadPoolManager.cpp | 14 +-- .../HandleAiUi-new/back/threadPoolManager.h | 39 +++---- .../HandleAiUi-new/back/triggerManager.cpp | 77 ++++++++++--- .../HandleAiUi-new/back/triggerManager.h | 15 ++- .../uiModule/uiModule_imageView.h | 57 +++++----- 13 files changed, 230 insertions(+), 135 deletions(-) diff --git a/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp b/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp index 8e7fc3a0..17fca760 100644 --- a/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp +++ b/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp @@ -512,7 +512,17 @@ void algoThread::run() detData* data = detQueue.dequeue();//å�–出数æ�® detQueueMutex.unlock(); int threadId = data->algoThreadIndex;//获å�–线程id - + if (waitForImg(data) == false) + { + qDebug() << "å�–图失败"; + cout << "get img err" << endl; + detDataManager* dManager = data->dManager; + data->dManager->deleteDetData(data->timeCode); + break; + } + detDataManager* dManager = data->dManager; + data->dManager->deleteDetData(data->timeCode); + continue; if (threadId == 0) { int timeOut = 0; diff --git a/HanddleAI/HandleAiUi-new/back/algorithmThread.h b/HanddleAI/HandleAiUi-new/back/algorithmThread.h index f7656f2f..15f3a3a9 100644 --- a/HanddleAI/HandleAiUi-new/back/algorithmThread.h +++ b/HanddleAI/HandleAiUi-new/back/algorithmThread.h @@ -714,7 +714,7 @@ public: handleAiModel* modelPtr; sqlManager* sql; - threadConroller* tManager; + threadManager* tManager; sncodeCls* snDatas; QMutex detQueueMutex; @@ -729,11 +729,11 @@ public: void run(); bool waitForImg(detData* data,int); void getAllFiles(std::string path, std::vector& files, std::string format); - void Init(threadConroller* threadConroller) { - tManager = threadConroller; - modelPtr = &threadConroller->models; - sql = threadConroller->sql; - snDatas = &threadConroller->snDatas; + void Init(threadManager* threadManager) { + tManager = threadManager; + modelPtr = &threadManager->models; + sql = threadManager->sql; + snDatas = &threadManager->snDatas; } bool addDetTask(detData*);//Ìí¼ÓÈÎÎñ diff --git a/HanddleAI/HandleAiUi-new/back/backEndManager.cpp b/HanddleAI/HandleAiUi-new/back/backEndManager.cpp index bc8a3873..53fedbef 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/backEndManager.cpp @@ -8,7 +8,8 @@ backEndManager::backEndManager() _jsonConfiguration = new jsonConfiguration(); _triggerManager = new triggerManager(); _cameraManager = new cameraManager(); - _threadConroller = new threadConroller(); + _threadManager = new threadManager(); + _detDataManager = new detDataManager(); 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)); diff --git a/HanddleAI/HandleAiUi-new/back/backEndManager.h b/HanddleAI/HandleAiUi-new/back/backEndManager.h index 1d62be3a..e8f82e96 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndManager.h +++ b/HanddleAI/HandleAiUi-new/back/backEndManager.h @@ -5,7 +5,8 @@ class triggerManager; class cameraManager; class jsonConfiguration; -class threadConroller; +class threadManager; +class detDataManager; class backEndManager :public QObject { Q_OBJECT @@ -15,7 +16,8 @@ public: triggerManager* _triggerManager;//´¥·¢Æ÷ cameraManager* _cameraManager; - threadConroller* _threadConroller; + threadManager* _threadManager; + detDataManager* _detDataManager; backEndManager(); ~backEndManager(); signals: diff --git a/HanddleAI/HandleAiUi-new/back/cameraManager.cpp b/HanddleAI/HandleAiUi-new/back/cameraManager.cpp index 51950d52..7b3333d0 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/cameraManager.cpp @@ -43,57 +43,79 @@ void camera::run() std::vectorcamera_mat; while (runFlag) { - getCameraImg(camera_mat); - while(camera_mat.size()>0) - { - int size = imgQueue.size(); - for (auto img : camera_mat) - { - imgQueue.enqueue(img); - if (lastUpdateTime.elapsed() > 200)//ÏÔʾÔÚ½çÃæ - { - lastUpdateTime.start(); // ¼Ç¼±¾´Î¸üÐÂʱ¼ä - QPixmap pixmap; - cvMatToQPixMap(img, pixmap); - showImgPack* pack = new showImgPack(); - pack->img = pixmap; - pack->type = imgWidgetOri; - pack->index = index; - emit S1(pack); - } - else - { - showLost++; - qDebug() << cameraModulePtr.moduleName << "Lost show"; - } - camera_mat.clear(); - } + //getCameraImg(camera_mat); + //while(camera_mat.size()>0) + //{ + // int size = imgQueue.size(); + // for (auto img : camera_mat) + // { + // imgQueue.enqueue(img); + // if (lastUpdateTime.elapsed() > 200)//ÏÔʾÔÚ½çÃæ + // { + // lastUpdateTime.start(); // ¼Ç¼±¾´Î¸üÐÂʱ¼ä + // QPixmap pixmap; + // cvMatToQPixMap(img, pixmap); + // showImgPack* pack = new showImgPack(); + // pack->img = pixmap; + // pack->type = imgWidgetOri; + // pack->index = index; + // emit S1(pack); + // } + // else + // { + // showLost++; + // qDebug() << cameraModulePtr.moduleName << "Lost show"; + // } + // camera_mat.clear(); + // } - //·ÀÖ¹¹ý´ó - while (imgQueue.size() > 5) - { - imgQueue.dequeue(); - imgLost++; - qDebug() << cameraModulePtr.moduleName << "Lost img"; - } - - getCameraImg(camera_mat); - } - if (data != nullptr) + // //·ÀÖ¹¹ý´ó + // while (imgQueue.size() > 5) + // { + // imgQueue.dequeue(); + // imgLost++; + // qDebug() << cameraModulePtr.moduleName << "Lost img"; + // } + // + // getCameraImg(camera_mat); + //} + int queueSize = requestQueue.size() ; + if (queueSize >0) { - data->imgMutex->lock(); + mutex.lock(); + detData *data = requestQueue.dequeue(); + trigger(); + data->imgMutex.lock(); + const unsigned long long timeCode = data->timeCode; while(1) { getCameraImg(data->imgs); - if (data->imgs.size() > data->imgAmountMin) + if (data->imgs.size() >= data->imgAmountMin) { qDebug() << data->timeCode << " Min:" << data->imgAmountMin << " Get:" << data->imgs.size(); - data->imgMutex->unlock(); - data = nullptr; + if (lastUpdateTime.elapsed() > 200)//ÏÔʾÔÚ½çÃæ + { + lastUpdateTime.start(); // ¼Ç¼±¾´Î¸üÐÂʱ¼ä + QPixmap pixmap; + cvMatToQPixMap(data->imgs[0], pixmap); + showImgPack* pack = new showImgPack(); + pack->img = pixmap; + pack->type = imgWidgetOri; + pack->index = index; + emit S1(pack); + } + else + { + showLost++; + qDebug() << cameraModulePtr.moduleName << "Lost show"; + } + data->imgMutex.unlock(); + mutex.unlock(); break; } + QThread::msleep(1); } - data->imgMutex->unlock(); + } QThread::msleep(100); } @@ -164,7 +186,7 @@ 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, _camera)); + cameras.insert(std::make_pair(m_module.key.toStdString(), _camera)); qDebug() << "[INFO] " << " initParas success!"; } else diff --git a/HanddleAI/HandleAiUi-new/back/cameraManager.h b/HanddleAI/HandleAiUi-new/back/cameraManager.h index 2659f6eb..0a7e7324 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraManager.h +++ b/HanddleAI/HandleAiUi-new/back/cameraManager.h @@ -31,7 +31,7 @@ public: void Process(detData* dataIn) { - data = dataIn; + requestQueue.enqueue(dataIn); } //Ïà»ú²Ù×÷ @@ -44,6 +44,16 @@ public: } return true; } + double getCameraValue()//µã¼¤¹âÏà»úרÓà + { + double value = 0; + std::vector camera_mat; + QByteArray task_name; + if (!cameraModulePtr.module_ptr->sendData(camera_mat, task_name)) + qCritical() << "[Error] " << " camera_mat is error! "; + value = task_name.toDouble(); + return value; + } void getCameraImg(std::vector& mats) { QByteArray task_name; @@ -66,7 +76,7 @@ public: signals: void S1(showImgPack*); private: - detData* data = nullptr; + //detData* data = nullptr; void sendData(std::string str) { QByteArray task_name(QByteArray::fromStdString(str)); @@ -77,8 +87,10 @@ private: int index = 0; int timeout = 5000; + QMutex mutex; cameraModule cameraModulePtr; QQueueimgQueue; + QQueuerequestQueue; backEndManager* _backEndManager; bool runFlag = true; @@ -91,7 +103,7 @@ class cameraManager : public QThread public: void init(backEndManager*); ~cameraManager(); - std::unordered_mapcameras;//key Ïà»úÃû + std::unordered_mapcameras;//key Ïà»úÃû void run() { //while (1) @@ -112,7 +124,7 @@ private: QList lib_list; public slots: void R1(showImgPack*); - void cameraTrigger(QString Name) + void cameraTrigger(std::string Name) { auto camera=cameras.find(Name); if (camera != cameras.end()) diff --git a/HanddleAI/HandleAiUi-new/back/myiothread.cpp b/HanddleAI/HandleAiUi-new/back/myiothread.cpp index 182b88bd..aa46b75d 100644 --- a/HanddleAI/HandleAiUi-new/back/myiothread.cpp +++ b/HanddleAI/HandleAiUi-new/back/myiothread.cpp @@ -61,7 +61,7 @@ void MyIoThread::run() bridge.back.sendFinsMsg( QString::fromStdString("write_DM" + to_string(bridge.back.json.tcp.startPos + i) + "_0"));*/ - workThread = new threadConroller(); + workThread = new threadManager(); for (auto thread : threadlist) thread->cameraImgsPtr = &workThread->cameraImgs; diff --git a/HanddleAI/HandleAiUi-new/back/myiothread.h b/HanddleAI/HandleAiUi-new/back/myiothread.h index 9ffec0b4..86ae3c57 100644 --- a/HanddleAI/HandleAiUi-new/back/myiothread.h +++ b/HanddleAI/HandleAiUi-new/back/myiothread.h @@ -97,7 +97,7 @@ public: void writeSnFromString(string SN, int startPos, bool highLowConversion); void requestSummary(std::string sn, int offset); detDataManager dManager; - threadConroller* workThread ; + threadManager* workThread ; bool barcodeScanLock = false; private: triggerLocker tLocker;//防止é‡�å¤�触å�‘ diff --git a/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp b/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp index 64ea7b9d..723e62af 100644 --- a/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp @@ -35,7 +35,7 @@ int threadAmount = 0; int maxThread = 16; ////////////THREAD//Manager//////////////////////// -threadConroller::threadConroller(QObject* parent) : QThread(parent) +threadManager::threadManager(QObject* parent) : QThread(parent) { //sql³õʼ»¯ sql = new sqlManager; @@ -57,7 +57,7 @@ threadConroller::threadConroller(QObject* parent) : QThread(parent) } } -void threadConroller::run() +void threadManager::run() { return; while (1) @@ -100,9 +100,9 @@ void threadConroller::run() QThread::msleep(10); } } -void threadConroller::addTask(detData* data) +void threadManager::addTask(detData* data) { - cout << __LINE__ << "insert Data " << data ->timeCode<< endl; + //cout << __LINE__ << "insert Data " << data ->timeCode<< endl; { algoThreadCls::datastruct _struct = bridge.back.json.algoThreads.getData(data->algoThreadName); data->algoThreadIndex = _struct.threadIndex; @@ -125,7 +125,7 @@ void threadConroller::addTask(detData* data) insertQueueMutex.unlock(); //this->start(); } -bool threadConroller::getFreeThread() +bool threadManager::getFreeThread() { #if 0 int index = 0; @@ -147,7 +147,7 @@ bool threadConroller::getFreeThread() return false; } -bool threadConroller::addTaskFreeThread(detData* data) +bool threadManager::addTaskFreeThread(detData* data) { #if 0 int index = 0; @@ -172,7 +172,7 @@ bool threadConroller::addTaskFreeThread(detData* data) return false; } -threadConroller::~threadConroller() +threadManager::~threadManager() { for (auto thread : algoThreadList) { diff --git a/HanddleAI/HandleAiUi-new/back/threadPoolManager.h b/HanddleAI/HandleAiUi-new/back/threadPoolManager.h index 1cbededb..59dd065c 100644 --- a/HanddleAI/HandleAiUi-new/back/threadPoolManager.h +++ b/HanddleAI/HandleAiUi-new/back/threadPoolManager.h @@ -16,7 +16,7 @@ #include #include #include -class threadConroller; +class threadManager; class algoThread; class subThread; class detDataManager; @@ -85,7 +85,7 @@ class detData { public: const unsigned long long timeCode = getTimeCode();//¸ù¾Ýʱ¼äºÍËæ»úÊýÉú³ÉµÄÖµ£¬Î¨Ò» - QMutex* imgMutex; + QMutex imgMutex; std::string SNcode; QString cameraKeyName; @@ -147,7 +147,7 @@ public: algoThreadName = IN_algoThreadName; oriShowIndex = IN_oriShowIndex; SNcode = IN_SN; - imgMutex = new QMutex(); + //imgMutex = new QMutex(); } ~detData() { @@ -155,7 +155,6 @@ public: img.release(); for (auto img : resultImgs) img.release(); - delete imgMutex; //delete cameraImgPtr; } @@ -183,18 +182,18 @@ class detDataManager public: std::unordered_mapmap; - QLinkedList detDatas; + //QLinkedList detDatas; QMutex dataMutex; detData* insertDetData(QString IN_cameraKeyName, QString IN_algoThreadName, std::string IN_SN, int IN_oriShowIndex) { dataMutex.lock(); - detData data(IN_cameraKeyName, IN_algoThreadName, IN_SN, IN_oriShowIndex); - data.dManager = this; - detDatas.push_back(data); - map.insert({ data.timeCode,&detDatas.back() }); + detData* data = new detData(IN_cameraKeyName, IN_algoThreadName, IN_SN, IN_oriShowIndex); + data->dManager = this; + //detDatas.push_back(data); + map.insert({ data->timeCode,data }); dataMutex.unlock(); - detData* dataPtr = getDetData(data.timeCode); + detData* dataPtr = getDetData(data->timeCode); if (dataPtr == nullptr) qDebug() << "´´½¨ÐÂÈÝÆ÷ʧ°Ü"; @@ -219,17 +218,11 @@ public: std::unordered_map::iterator it = map.find(timeCode); if (it != map.end()) { + it->second->imgMutex.lock(); + delete it->second; map.erase(it); - QLinkedList::iterator linkedListIt; - for (linkedListIt = detDatas.begin(); linkedListIt != detDatas.end(); ++linkedListIt) - { - if (linkedListIt->timeCode == timeCode) - { - detDatas.erase(linkedListIt); - dataMutex.unlock(); - return true; - } - } + dataMutex.unlock(); + return true; } dataMutex.unlock(); return false; @@ -262,12 +255,12 @@ public: /// /// Ï̳߳عÜÀí /// -class threadConroller : public QThread +class threadManager : public QThread { Q_OBJECT public: - explicit threadConroller(QObject* parent = nullptr); + explicit threadManager(QObject* parent = nullptr); QMutex queueMutex; cameraImages cameraImgs; QQueue detDataQueue; @@ -283,7 +276,7 @@ public: bool getFreeThread(); bool addTaskFreeThread(detData*); sncodeCls snDatas; - ~threadConroller(); + ~threadManager(); private: QListimgWaitList; }; diff --git a/HanddleAI/HandleAiUi-new/back/triggerManager.cpp b/HanddleAI/HandleAiUi-new/back/triggerManager.cpp index 6943dae4..c5219482 100644 --- a/HanddleAI/HandleAiUi-new/back/triggerManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/triggerManager.cpp @@ -1,9 +1,30 @@ #include #include +#include #include +#include +#include +static correctionStruct* correctionData; void triggerManager::decodeCameraCMD(QByteArray byte) { -#if 0 +#if 1 + //if (checkTrigger(1, 2, byte) == true) + { + detData* data = dManager->insertDetData("Camera1", "Thread3", "TEST", 0); + data->correctionData = correctionData; + _threadManager->addTask(data);//Ìí¼ÓÈÎÎñ + auto camera = _cameraManager->cameras.find("123"); + camera->second->Process(data); + } + //if (checkTrigger(2, 2, byte) == true) + { + detData* data = dManager->insertDetData("Camera1", "Thread2", "TEST", 0); + data->correctionData = correctionData; + _threadManager->addTask(data);//Ìí¼ÓÈÎÎñ + auto camera = _cameraManager->cameras.find("Vir-CA013-20GC"); + camera->second->Process(data); + } + return; if (byte.isEmpty()) return; double cameraData = 0; @@ -24,12 +45,27 @@ void triggerManager::decodeCameraCMD(QByteArray byte) correctionData->in_Y_Y0Z = { -1147.29,-1147.28,-940.82 }; correctionData->in_Z_Y0Z = { 118.15,-228.19,-256.5 }; correctionData->in_X_Y0Z_Value = { -36.652200,-36.7302,41.0436 }; - detData* data = dManager.insertDetData("Camera1", "correctionDataThread", "TEST", 0); + detData* data = dManager->insertDetData("Camera1", "correctionDataThread", "TEST", 0); data->correctionData = correctionData; - workThread->addTask(data);//Ìí¼ÓÈÎÎñ + _threadManager->addTask(data);//Ìí¼ÓÈÎÎñ correctionData = nullptr; } - + if (checkTrigger(1, 2, byte) == true) + { + detData* data = dManager->insertDetData("Camera1", "Thread3", "TEST", 0); + data->correctionData = correctionData; + _threadManager->addTask(data);//Ìí¼ÓÈÎÎñ + auto camera = _cameraManager->cameras.find("123"); + camera->second -> Process(data); + } + if (checkTrigger(2, 2, byte) == true) + { + detData* data = dManager->insertDetData("Camera1", "Thread3", "TEST", 0); + data->correctionData = correctionData; + _threadManager->addTask(data);//Ìí¼ÓÈÎÎñ + auto camera = _cameraManager->cameras.find("456"); + camera->second->Process(data); + } //×ÜÁ÷³Ì¿ªÊ¼£¬»úÆ÷ÈË·¢ËÍ1ÖÁ¼Ä´æÆ÷259 //ÉÏλ»úÈ·ÈÏOKÖ®ºó£¬ÇåÁã¼Ä´æÆ÷259£¬²¢·¢ËÍ1ÖÁ¼Ä´æÆ÷260 @@ -37,8 +73,8 @@ void triggerManager::decodeCameraCMD(QByteArray byte) //Ö®ºó»úÆ÷ÈËÈ·ÈÏÖ®ºóÐè·¢ËͲâÁ¿µãλ×ÜÊý¾ßÌåÖµÖÁ¼Ä´æÆ÷258 if (checkTrigger(259, 1, byte) == true) { - bridge.back.sendFinsMsg("write_short_259_0");//´¥·¢ÐźÅÇåÁã - bridge.back.sendFinsMsg("write_short_260_1");//¿ªÊ¼¼ì²âÐźŠ+ sendFinsMsg("write_short_259_0");//´¥·¢ÐźÅÇåÁã + sendFinsMsg("write_short_260_1");//¿ªÊ¼¼ì²âÐźŠ} //»úÆ÷È˼¤¹âµ±Ç°µãλ 264 1...9 @@ -64,7 +100,7 @@ void triggerManager::decodeCameraCMD(QByteArray byte) double xValue = (xValue1 == 1 ? 1 : -1) * ((double)xValue2 + ((double)xValue3) / (std::pow(10, to_string(xValue3).length()))); double yValue = (yValue1 == 1 ? 1 : -1) * ((double)yValue2 + ((double)yValue3) / (std::pow(10, to_string(yValue3).length()))); double zValue = (zValue1 == 1 ? 1 : -1) * ((double)zValue2 + ((double)zValue3) / (std::pow(10, to_string(zValue3).length()))); - double rangeData = threadlist[0]->getValueFromCamera(); + double rangeData = _cameraManager->cameras.find("Ïà»úµÄÃû×Ö")->second->getCameraValue(); if (armPos == 1)//µÚÒ»´Î correctionData = new correctionStruct(); @@ -92,16 +128,16 @@ void triggerManager::decodeCameraCMD(QByteArray byte) correctionData->in_X_Y0Z_Value.push_back(rangeData); } } - bridge.back.sendFinsMsg("write_short_261_0");//ÇåÁã - bridge.back.sendFinsMsg("write_short_262_1"); - bridge.back.sendFinsMsg("write_short_263_1"); + sendFinsMsg("write_short_261_0");//ÇåÁã + sendFinsMsg("write_short_262_1"); + sendFinsMsg("write_short_263_1"); //ÉÏλ»úУÕýÍê³É£¬½«¼Ä´æÆ÷274ÖÃΪ1£¬²¢½«½á¹û°´ÕÕ¶¨ÒåXYZ¹æÔò·ÅÈë310~336ÖÐ if (armPos == 9) { - detData* data = dManager.insertDetData("Camera1", "correctionDataThread", "TEST", 0); + detData* data = dManager->insertDetData("Camera1", "correctionDataThread", "TEST", 0); data->correctionData = correctionData; - workThread->addTask(data);//Ìí¼ÓÈÎÎñ + _threadManager->addTask(data);//Ìí¼ÓÈÎÎñ correctionData = nullptr; } } @@ -110,8 +146,8 @@ void triggerManager::decodeCameraCMD(QByteArray byte) if (checkTrigger(300, 1, byte) == true) { - bridge.back.sendFinsMsg("write_short_300_0");//´¥·¢ÐźÅÇåÁã - bridge.back.sendFinsMsg("write_short_301_1");//¿ªÊ¼¼ì²âÐźŠ+ sendFinsMsg("write_short_300_0");//´¥·¢ÐźÅÇåÁã + sendFinsMsg("write_short_301_1");//¿ªÊ¼¼ì²âÐźŠint Pos = getValue(303, byte); } @@ -122,6 +158,9 @@ void triggerManager::decodeCameraCMD(QByteArray byte) void triggerManager::init(backEndManager* input) { _backEndManager = input; + dManager = _backEndManager->_detDataManager; + _cameraManager = _backEndManager->_cameraManager; + _threadManager = _backEndManager->_threadManager; QLibrary* m_lib = new QLibrary(triggerFileName); bool flag = m_lib->load(); if (!m_lib->isLoaded()) @@ -152,4 +191,14 @@ void triggerManager::init(backEndManager* input) } } this->start(); +} + +int triggerManager::getValue(int dmPos, QByteArray byte) +{ + int triggerPos = (dmPos - _backEndManager->_jsonConfiguration->tcp.startPos) * 2; + if (byte.size() / 2 < triggerPos) + return false; + int val1 = byte.at(triggerPos) * 256; + int val2 = static_cast(byte.at(triggerPos + 1)); + return val1 + val2; } \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/triggerManager.h b/HanddleAI/HandleAiUi-new/back/triggerManager.h index 16c9fb6b..3f0cd71a 100644 --- a/HanddleAI/HandleAiUi-new/back/triggerManager.h +++ b/HanddleAI/HandleAiUi-new/back/triggerManager.h @@ -6,7 +6,14 @@ #include #include #include + +using namespace std; class backEndManager; +class cameraManager; +class jsonConfiguration; +class threadManager; +class detDataManager; + //·ÀÖ¹ÖØ¸´´¥·¢ class triggerLockerT { @@ -69,10 +76,11 @@ public: void init(backEndManager* input); void run() { + QThread::msleep(5000); while (runFlag) { reciveCommond(); - QThread::msleep(interval); + QThread::msleep(1000); } } @@ -124,8 +132,13 @@ public: } return true; } + + int getValue(int dmPos, QByteArray byte); private: + threadManager* _threadManager; + detDataManager* dManager; backEndManager* _backEndManager; + cameraManager* _cameraManager; triggerLockerT tLocker;//·ÀÖ¹ÖØ¸´´¥·¢,ÿ´ÎÊÕµ½Êý¾Ýʱ¼ì²éÊý¾ÝÊÇ·ñÓëÉÏ´ÎÏàͬ£¬Èç¹ûÏàͬcheckTrigger»á·µ»Øfalse /// /// ¼ì²âQByteArrayÖÐijλÖõÄÖµÊÇ·ñºÍÊäÈëÒ»Ñù£¬Ê¹ÓÃÁ˾ø¶ÔλÖà diff --git a/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h b/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h index 7150fab5..cf9f99e7 100644 --- a/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h +++ b/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h @@ -34,41 +34,36 @@ public: setDragMode(QGraphicsView::DragMode::NoDrag); setInteractive(false); setEnabled(false); - this->setStyleSheet("QGraphicsView {" - "background: transparent;" - "background-image: url(:/topBar/icon/waitting.png);" - "background-repeat: no-repeat;" - "background-position: center center;" - "background-size: contain;" - "}"); - //initShow(); - scene = new QGraphicsScene(this); + scene = new QGraphicsScene(); this->setScene(scene); - //this->fitInView(pixmapItem, Qt::KeepAspectRatio); - this->setBackgroundBrush(QBrush(QColor(0, 0, 0))); - setEnabled(true); - setMouseTracking(true); imgLabel = new QLabel(); scene->clear(); scene->addWidget(imgLabel); imgLabel->setMaximumSize(9999, 9999); + this->setStyleSheet("QGraphicsView {" + "background: transparent;" + "background-image: url(:/topBar/icon/waitting.png);" + "background-repeat: no-repeat;" + "background-position: center center;" + "background-size: contain;" + "}"); mutex.unlock(); } void setImg(QImage& image) { if (image.isNull()) return; - showimg(QPixmap::fromImage(image)); + showImg(QPixmap::fromImage(image)); } void setImg(cv::Mat& src) { if (src.empty()) return; - showimg(QPixmap::fromImage(cvMatToQImage(src))); + showImg(QPixmap::fromImage(cvMatToQImage(src))); } void setImg(QPixmap& pixmap) { - showimg(pixmap); + showImg(pixmap); } void resetImage() { @@ -167,19 +162,17 @@ protected: vBar->setValue(vBar->value() - delta.y()); } private: - void showimg(QPixmap& img) + void showImg(QPixmap& img) { mutex.lock(); - //scene->clear(); - //scene->addPixmap(img); - imgLabel->setPixmap(img); - + setEnabled(true); + setMouseTracking(true); QRect rect = img.rect(); imageWidth = rect.width(); imageHeight = rect.height(); imgLabel->setFixedSize(imageWidth, imageHeight); setSceneRect(rect); - fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio); + this->fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio); mutex.unlock(); } bool m_isPan; @@ -265,7 +258,7 @@ public: } oriImg= oriImgInput; if (MatType == false) - showImg(pixOriImg); + showImgOnGraphicsView(pixOriImg); } //set²»Ò»¶¨ÏÔʾ£¬Òª¸ù¾Ýµ±Ç°ÏÔʾµÄÀàÐ;ö¶¨ void setResImg(cv::Mat& resImgInput) @@ -279,7 +272,7 @@ public: } resImg = resImgInput; if (MatType == true) - showImg(pixResImg); + showImgOnGraphicsView(pixResImg); } //set²»Ò»¶¨ÏÔʾ£¬Òª¸ù¾Ýµ±Ç°ÏÔʾµÄÀàÐ;ö¶¨ void setOriImg(QPixmap& oriImgInput) @@ -289,7 +282,7 @@ public: return; } if (MatType == false) - showImg(pixOriImg); + showImgOnGraphicsView(pixOriImg); } //set²»Ò»¶¨ÏÔʾ£¬Òª¸ù¾Ýµ±Ç°ÏÔʾµÄÀàÐ;ö¶¨ void setResImg(QPixmap& resImgInput) @@ -299,10 +292,10 @@ public: return; } if (MatType == true) - showImg(pixResImg); + showImgOnGraphicsView(pixResImg); } //ÎÞÊÓµ±Ç°ÀàÐÍÖ±½ÓÏÔʾ - void showImg(cv::Mat& imageMat) { + void showImgOnGraphicsView(cv::Mat& imageMat) { if (imageMat.empty()) { return; } @@ -318,7 +311,7 @@ public: } view->setImg(pixmap); } - void showImg(QPixmap& imageMat) { + void showImgOnGraphicsView(QPixmap& imageMat) { view->setImg(imageMat); } void switchOriAndRes()//Çл»Ô­Í¼ºÍ½á¹ûͼ @@ -326,17 +319,17 @@ public: if (MatType == false) { if(pixOriImg.isNull()) - showImg(resImg); + showImgOnGraphicsView(resImg); else - showImg(pixResImg); + showImgOnGraphicsView(pixResImg); label2->setText(u8"½á¹ûͼ"); } else { if (pixOriImg.isNull()) - showImg(oriImg); + showImgOnGraphicsView(oriImg); else - showImg(pixOriImg); + showImgOnGraphicsView(pixOriImg); label2->setText(u8"ԭͼ"); } MatType = !MatType;