From d97ed362fb47fbae37e674ba541bc082406c782c Mon Sep 17 00:00:00 2001 From: "15089880081@163.com" <15089880081@163.com> Date: Mon, 3 Jun 2024 18:27:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=A3=80=E6=B5=8B=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=AE=8C=E5=96=84=E5=AD=98=E5=9B=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HanddleAI/HandleAiUi-new/CMakeLists.txt | 4 +- .../HandleAiUi-new/algo/ALGO_Inspection.h | 60 ++++++++++++++---- .../HandleAiUi-new/back/backEndManager.cpp | 7 +- .../HandleAiUi-new/back/backEndManager.h | 2 +- .../back/imgSaveThreadManager.h | 17 +++-- .../front/pages/manualDetWidget.cpp | 2 +- .../front/pages/manualDetWidget.h | 6 +- HanddleAI/HandleAiUi-new/globalStruct.h | 4 +- .../HandleAiUi-new/handleAi/handleAiModel.h | 20 +++--- HanddleAI/HandleAiUi-new/main.cpp | 2 +- lib/Hd_3DCameraLMI_module_PointLazer.exp | Bin 772 -> 774 bytes lib/Hd_3DCameraLMI_module_PointLazer.lib | Bin 2276 -> 2276 bytes lib/Hd_DalsaCamera_module.exp | Bin 751 -> 753 bytes lib/Hd_DalsaCamera_module.lib | Bin 2120 -> 2120 bytes lib/Hd_FinsTcp_module.exp | Bin 743 -> 745 bytes lib/Hd_FinsTcp_module.lib | Bin 2064 -> 2064 bytes lib/Hd_MvCamera_module_GENTL.exp | Bin 756 -> 758 bytes lib/Hd_MvCamera_module_GENTL.lib | Bin 2164 -> 2164 bytes lib/Hd_MvCamera_module_GIGE.exp | Bin 755 -> 757 bytes lib/Hd_MvCamera_module_GIGE.lib | Bin 2148 -> 2148 bytes lib/Hd_ResultsSummary_module.exp | Bin 756 -> 758 bytes lib/Hd_ResultsSummary_module.lib | Bin 2164 -> 2164 bytes lib/Hd_SocketModule_ModbusTcp.exp | Bin 1501 -> 1503 bytes lib/Hd_SocketModule_ModbusTcp.lib | Bin 3446 -> 3446 bytes 24 files changed, 86 insertions(+), 38 deletions(-) diff --git a/HanddleAI/HandleAiUi-new/CMakeLists.txt b/HanddleAI/HandleAiUi-new/CMakeLists.txt index d1ffb1f6..54ef9b00 100644 --- a/HanddleAI/HandleAiUi-new/CMakeLists.txt +++ b/HanddleAI/HandleAiUi-new/CMakeLists.txt @@ -110,7 +110,9 @@ else() ${ALGO_SRC_FILES} ${UI_FILES} "ff.rc" "icon.qrc" "uiModule/uiModule_switchProduct.h") else() - add_executable( ${CURRENT_FOLDER} WIN32 + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG") + add_executable( ${CURRENT_FOLDER} ${HEAD_FILES} ${SRC_FILES} ${BACK_HEAD_FILES} diff --git a/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h b/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h index 458c885d..dde5793a 100644 --- a/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h +++ b/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h @@ -323,6 +323,41 @@ void pinHalconEvaluate(std::vector& Result,cv::Mat& src, cv::Mat& Pain } } +cv::Mat pinDetEvaluate(cv::Mat& src, handleAiModelManager* _handleAiModelManager) +{ + cv::Mat resultImg; + std::vector result; + _handleAiModelManager->smalDet->Evaluate(src, result); + cv::Point centerPos(src.rows/2, src.cols/2); + std::vector targets; + cv::Rect targetRect(src.cols / 4, src.rows / 4, src.cols / 2, src.rows / 2); + for (auto detResult : result) + { + //cv::Rect rect(detResult.x - detResult.w / 2, detResult.y - detResult.h / 2, detResult.w, detResult.h); + if ((detResult.x< targetRect.x || detResult.x > targetRect.x + targetRect.width || + detResult.y < targetRect.y || detResult.y > targetRect.y + targetRect.height)==false) + { + targets.push_back(detResult); + } + } + + cv::Rect resultRect(INT_MAX,INT_MAX,INT_MIN,INT_MIN); + int targetSize = targets.size(); + std::cout << targetSize; + for (auto detResult : targets) + { + resultRect.x = min(resultRect.x, detResult.x - detResult.w / 2); + resultRect.y = min(resultRect.y, detResult.y - detResult.h / 2); + } + for (auto detResult : targets) + { + resultRect.width = max(resultRect.width, detResult.w/2 + detResult.x - resultRect.x); + resultRect.height = max(resultRect.height, detResult.h/2 + detResult.y - resultRect.y); + } + + return src(resultRect); +} + void ALGO_Inspection(std::shared_ptr data, handleAiModelManager* _handleAiModelManager) { if (data->oriImgs.size() < 1) @@ -331,48 +366,51 @@ void ALGO_Inspection(std::shared_ptr data, handleAiModelManager* _hand return; } cv::Mat src = data->oriImgs[0]; + //DET + cv::Mat detResult = pinDetEvaluate(src, _handleAiModelManager); + cv::Mat Paint; - cvtColor(src, Paint, cv::COLOR_GRAY2BGR); + cvtColor(detResult, Paint, cv::COLOR_GRAY2BGR); std::vectorhalconResult; //hv_in_Parameter //[0]-产品种类; 1A正面 2A反面 3B正面 4C正面 int productType = 3; //[1]-图像序号第一位; - int pinRow = data->armPos / 2; + int pinRow = 1; //[2]-图像序号第二位; - int pinCol = data->armPos % 2; + int pinCol = 0; //[3]-3d相机精度(mm); //[4]-ping针偏移判NG阈值(mm); //[5]-切图存图开关 - + //HALCON - pinHalconEvaluate(halconResult,src, Paint, productType, pinRow, pinCol); + pinHalconEvaluate(halconResult, detResult, Paint, productType, pinRow, pinCol); //HANDLEAI switch(productType) { case 0: - pinHandleAiEvaluate(data, src(halconResult[0]), Paint(halconResult[0]), + pinHandleAiEvaluate(data, detResult, Paint, _handleAiModelManager->largeSeg, _handleAiModelManager->largeCls); break; case 1://3 p - pinHandleAiEvaluate(data, src(halconResult[0]), Paint(halconResult[0]), + pinHandleAiEvaluate(data, detResult, Paint, _handleAiModelManager->largeSeg, _handleAiModelManager->largeCls); break; case 2://2 - pinHandleAiEvaluate(data, src(halconResult[0]), Paint(halconResult[0]), + pinHandleAiEvaluate(data, detResult, Paint, _handleAiModelManager->midSeg, _handleAiModelManager->midCls); break; case 3://1 - pinHandleAiEvaluate(data, src(halconResult[0]), Paint(halconResult[0]), + pinHandleAiEvaluate(data, detResult, Paint, _handleAiModelManager->smallSeg, _handleAiModelManager->smallCls); break; } //rectangle(Paint, halconResult[0], cv::Scalar(0, 0, 255), 4); //set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") - data->resultImgs.push_back(src(halconResult[0]).clone());//切下来的原图 - data->resultImgs.push_back(Paint(halconResult[0]).clone());//AI检测结果 + // data->resultImgs.push_back(detResult.clone());//切下来的原图 + data->resultImgs.push_back(Paint.clone());//AI检测结果 _sleep(100); } diff --git a/HanddleAI/HandleAiUi-new/back/backEndManager.cpp b/HanddleAI/HandleAiUi-new/back/backEndManager.cpp index 79f4c544..b5f2cec1 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/backEndManager.cpp @@ -77,10 +77,13 @@ backEndManager::~backEndManager() } -void backEndManager::startManualDetSlot(cv::Mat mats, int algoIndex) +void backEndManager::startManualDetSlot(cv::Mat* mats, int algoIndex) { std::shared_ptr data = _detDataManager->insertDetData("Manual", "Manual", 0, 1); - data->oriImgs.push_back(mats); + data->oriImgMutex.lock(); + data->oriImgs.push_back(mats->clone()); + data->oriImgMutex.unlock(); + delete mats; _threadManager->addTask(data);//添加任务 } \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/backEndManager.h b/HanddleAI/HandleAiUi-new/back/backEndManager.h index 1ad584b9..37180c31 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndManager.h +++ b/HanddleAI/HandleAiUi-new/back/backEndManager.h @@ -40,7 +40,7 @@ public slots: this->start(); //std::async(std::launch::async, &backEndManager::run, this); } - void startManualDetSlot(cv::Mat mats, int algoIndex); + void startManualDetSlot(cv::Mat* mats, int algoIndex); private: void run(); signals: diff --git a/HanddleAI/HandleAiUi-new/back/imgSaveThreadManager.h b/HanddleAI/HandleAiUi-new/back/imgSaveThreadManager.h index 47baec75..03a9d6c9 100644 --- a/HanddleAI/HandleAiUi-new/back/imgSaveThreadManager.h +++ b/HanddleAI/HandleAiUi-new/back/imgSaveThreadManager.h @@ -73,35 +73,34 @@ public: std::string fileName; for (auto str : data->imgSaveFileParameter) fileName += str + "_"; + std::string segClsDirName; switch (type) { case oriImgSaveThread: for (int i = 0; i < data->oriImgs.size(); i++) { - fileName += getCurrentDateTime() + "_Count" + std::to_string(i) + ".bmp"; - cv::imwrite(fileSavePath + fileName, data->oriImgs[i]); + cv::imwrite(fileSavePath + fileName + getCurrentDateTime() + "_Count" + std::to_string(i) + ".bmp", data->oriImgs[i]); qInfo() << QString::fromStdString(data->cameraKeyName + " ori:" + fileSavePath + fileName); } break; case resImgSaveThread: for (int i = 0; i < data->resultImgs.size(); i++) { - fileName += getCurrentDateTime() + "_Count" + std::to_string(i) + ".jpg"; - cv::imwrite(fileSavePath + fileName, data->resultImgs[i]); + cv::imwrite(fileSavePath + fileName + getCurrentDateTime() + "_Count" + std::to_string(i) + ".jpg", data->resultImgs[i]); qInfo() << QString::fromStdString(data->cameraKeyName + " ori:" + fileSavePath + fileName); } //保存seg原图和cls原图 - createDirectoryIfNotExists(fileSavePath+"detImgs//");//文件夹处理 + segClsDirName = fileSavePath + "detImgs//"+ getCurrentDateTime()+"//"; + createDirectoryIfNotExists(segClsDirName);//文件夹处理 for (int i = 0; i < data->segOriginImgs.size(); i++) { - fileName += getCurrentDateTime() + "_SEG_Count" + std::to_string(i) + ".bmp"; - cv::imwrite(fileSavePath + "detImgs//" + fileName, data->segOriginImgs[i]); + ; + cv::imwrite(segClsDirName + fileName + "SEG_Count_" + getCurrentDateTime() + "_" + std::to_string(i) + ".bmp", data->segOriginImgs[i]); //qInfo() << QString::fromStdString(data->cameraKeyName + " ori:" + fileSavePath + fileName); } for (int i = 0; i < data->clsOriginImgs.size(); i++) { - fileName += getCurrentDateTime() + "_CLS_RES_"+ std::to_string(data->clsOriginImgs[i].second) + "_Count" + std::to_string(i) + ".bmp"; - cv::imwrite(fileSavePath + "detImgs//" + fileName, data->clsOriginImgs[i].first); + cv::imwrite(segClsDirName + fileName + "CLS_RES" + getCurrentDateTime() + "_" + std::to_string(data->clsOriginImgs[i].second) + "_Count" + std::to_string(i) + ".bmp", data->clsOriginImgs[i].first); //qInfo() << QString::fromStdString(data->cameraKeyName + " ori:" + fileSavePath + fileName); } break; diff --git a/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.cpp b/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.cpp index 9da7c375..a6a576c5 100644 --- a/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.cpp +++ b/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.cpp @@ -10,7 +10,7 @@ void manualDetThread::run() fileManager::getAllFiles(imgPathStr, files, "jpg"); for (auto file : files) { - emit startManualDetSignal(cv::imread(file), algoIndex); + emit startManualDetSignal(new cv::Mat(cv::imread(file,-1)), algoIndex); //mats.push_back(std::shared_ptr(std::make_shared(cv::imread(file)))); logWidget->append(u8"检测到图片:" + QString::fromStdString(file)); } diff --git a/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.h b/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.h index 8a75e9c6..19bb6842 100644 --- a/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.h +++ b/HanddleAI/HandleAiUi-new/front/pages/manualDetWidget.h @@ -27,7 +27,7 @@ public slots: void manualDetSlot(); signals: void finishImgReadSignal(); - void startManualDetSignal(cv::Mat,int); + void startManualDetSignal(cv::Mat*,int); }; class manualDetWidget : public QWidget { @@ -130,6 +130,10 @@ public: connect(startEvaluateBtn, &QPushButton::clicked, this, [=]() {startEvaluateBtn->setDisabled(true); }); connect(_manualDetThread, &manualDetThread::finishImgReadSignal,this, &manualDetWidget::finishImgReadSlot); } + ~manualDetWidget() + { + delete _manualDetThread; + } public slots: void finishImgReadSlot() { diff --git a/HanddleAI/HandleAiUi-new/globalStruct.h b/HanddleAI/HandleAiUi-new/globalStruct.h index ee9f7627..a7a0ea9a 100644 --- a/HanddleAI/HandleAiUi-new/globalStruct.h +++ b/HanddleAI/HandleAiUi-new/globalStruct.h @@ -17,7 +17,7 @@ #define sColor_Black "22, 22, 22" #define sColor_BlackWithWhite "45, 45, 45" -#define enableHandleAiModel 0 +#define enableHandleAiModel 1 #define disableBackEndCheck 1 //绐楀彛璁剧疆 @@ -105,5 +105,5 @@ static std::string getFileName(std::string path) return path.substr(path.find_last_of("\\") + 1, path.find_last_of(".") - path.find_last_of("\\") - 1); } Q_DECLARE_METATYPE(imgWidgetShowType) -Q_DECLARE_METATYPE(cv::Mat) +Q_DECLARE_METATYPE(cv::Mat*) #pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/handleAi/handleAiModel.h b/HanddleAI/HandleAiUi-new/handleAi/handleAiModel.h index 8fc4c4bd..56dfe606 100644 --- a/HanddleAI/HandleAiUi-new/handleAi/handleAiModel.h +++ b/HanddleAI/HandleAiUi-new/handleAi/handleAiModel.h @@ -86,7 +86,7 @@ public: }; void init() { - detPtr = handdleAI::CreateDetObjS((char*)path.c_str(), gpuIndex, 1); + detPtr = handdleAI::CreateDetObjS((char*)path.c_str(), 1, gpuIndex); } bool destroy() { @@ -124,23 +124,24 @@ public: gpuMutex = std::vector(gpuCnt, new std::mutex()); #if enableHandleAiModel int gpu1 = 0; - largeSeg = new handleAiModelSeg("./HandleAiModels/large-seg.BHD", gpu1, gpuMutex[gpu1]); - midSeg = new handleAiModelSeg("./HandleAiModels/mid-seg.BHD", gpu1, gpuMutex[gpu1]); - smallSeg = new handleAiModelSeg("./HandleAiModels/small-seg.BHD", gpu1, gpuMutex[gpu1]); + largeSeg = new handleAiModelSeg("./HandleAiModels/large_seg.BHD", gpu1, gpuMutex[gpu1]); + midSeg = new handleAiModelSeg("./HandleAiModels/mid_seg.BHD", gpu1, gpuMutex[gpu1]); + smallSeg = new handleAiModelSeg("./HandleAiModels/small_seg.BHD", gpu1, gpuMutex[gpu1]); segModels.push_back(largeSeg); segModels.push_back(midSeg); segModels.push_back(smallSeg); - largeCls = new handleAiModelCls("./HandleAiModels/large-cls.BHD", gpu1, gpuMutex[gpu1]); - midCls = new handleAiModelCls("./HandleAiModels/mid-cls.BHD", gpu1, gpuMutex[gpu1]); + largeCls = new handleAiModelCls("./HandleAiModels/large_cls.BHD", gpu1, gpuMutex[gpu1]); + midCls = new handleAiModelCls("./HandleAiModels/mid_cls.BHD", gpu1, gpuMutex[gpu1]); smallCls = new handleAiModelCls("./HandleAiModels/small_cls.BHD", gpu1, gpuMutex[gpu1]); clsModels.push_back(largeCls); clsModels.push_back(midCls); clsModels.push_back(smallCls); - + smalDet = new handleAiModelDet("./HandleAiModels/small_det.BHD", gpu1, gpuMutex[gpu1]); + detModels.push_back(smalDet); #endif } ///////////END///////// @@ -151,6 +152,7 @@ public: #if enableHandleAiModel std::vector> futuresSeg; std::vector> futuresCls; + std::vector> futuresDet; for(auto model: segModels) { futuresSeg.push_back(std::async(std::launch::async, &handleAiModelSeg::init, model)); @@ -163,7 +165,7 @@ public: } for (auto model : detModels) { - futuresCls.push_back(std::async(std::launch::async, &handleAiModelDet::init, model)); + futuresDet.push_back(std::async(std::launch::async, &handleAiModelDet::init, model)); emit _backEndManagerIn->sendInitString(QString::fromStdString(getFileName(model->path) + "初始化中...")); } @@ -184,7 +186,7 @@ public: } int detCls = 0; - for (auto& func : detModels) + for (auto& func : futuresDet) { func.wait(); emit _backEndManagerIn->sendInitString(QString::fromStdString(getFileName(detModels[detCls]->path) + "成功")); diff --git a/HanddleAI/HandleAiUi-new/main.cpp b/HanddleAI/HandleAiUi-new/main.cpp index 9d3c6884..b9ad4ffe 100644 --- a/HanddleAI/HandleAiUi-new/main.cpp +++ b/HanddleAI/HandleAiUi-new/main.cpp @@ -45,7 +45,7 @@ int main(int argc, char* argv[]) ////////// qRegisterMetaType("imgWidgetShowType"); qRegisterMetaType("showImgPack"); - qRegisterMetaType("mat"); + qRegisterMetaType("matPtr"); MainWindow w; w.show(); diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.exp b/lib/Hd_3DCameraLMI_module_PointLazer.exp index d8e955a08830ce97f26c66b802d0659eea1b677e..4d888b40a9c5375f642662f99829c7d90e8cb894 100644 GIT binary patch delta 143 zcmZo+Yh&X~X=7se4+L5hIh`5VCi>pz{l&n*V9UTL2&5QXCR;Lk`KvKxH8L>xW+oTq z7w4yyC};#}D)@N%c{AiP*a|Wvm!~keSj8k~7ANOB=4Xax#^jfl#3Yqw=A^__n3?Dn qrRJn27N;_#R-}T|g%wY}z$ngcp=WGtXlyX~9itOdR^wzNrb_@5^(*55 delta 159 zcmZo;YhmL|X=7se4+I($Ih`3pz{lUP%V9UTL2&5Q1CtEUlWverMZen2Y%}g%J zFV0UZQP2p|RPgci^Jd6quoYxTE>B_bw2Dd2EKbgM%+CzXjL9!8iAgHW%t?ubB+ng&(A52@eKwt4NdfnE%l6zO${w4e_(WC`rI_x Hgy|9hD(5k2 diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.lib b/lib/Hd_3DCameraLMI_module_PointLazer.lib index b04150d66d0bd6f8780c0ea27f1bb8d8c729edd8..b506c2adaff32453f920896da4a99bad9470fc31 100644 GIT binary patch delta 118 zcmaDN_(X8S0VWpXY46@lKEiaIMU5e=adJO%F%yuQ#V)m3j>UkH^Ptn_hnE-_7?>uX wWRjj-#99wirapNBI|o$hWCyl5&b6m&4}62FG@E>vtp}!38LD#gEOswO00)UE^Z)<= delta 118 zcmaDN_(X8S0VbAz%oEN}KEiaIMV;Yu)8u~UVkRIpi(P879E$-XXW8l7S1&OzFfdI% w$s|3wh_xQ3OnveMb`Gf0$qsCBoC?-nr@ui}noYjT)&oBpEpA`gRLM#a(N0+-9$!dewWmw(sYK@ic|&{tC+Ch$$J^a*)8>q UjZFha6({12NR3#l2yki_b}~YQDewzob1D#&IF|7*`+q0XO?DU7G=zs{FY@ZOj3RF rT2>CIg2@+IV_DC4{(bR!@_QEf$!nOTC+D&?!c;0lRc@AN*JK0$_5&nj delta 108 zcmX>ha6({12NTP2)AOe%_b}~YQD^wvG}(taoe4U!8q3jtk}rF$S5Yv mIVL1OKc_gxHyFq?G|@A*&@(nRG&Y!gkBpEpA`gRLM#a(N0+T_>Zou1jiCX*xq{MJj`fRZLj0k%5s>Oqg>_ kNPd1!ag1*;kZEY5XKblwY;0<1Ir%c96VvCW$>L0x0B~k0k^lez diff --git a/lib/Hd_FinsTcp_module.lib b/lib/Hd_FinsTcp_module.lib index f679fdae9df129fa1e4d394f63100284f9d61348..e7784b3ea75952388bfd4c57a0b8fb3be8e54022 100644 GIT binary patch delta 113 zcmbOrFhO8L2@@xiS>+3PMg|6s$^2|)lQ%QfvZyg+HBOFWRi7NqY{LX(_OnWD-pnk_ w$nsyM=EdYwEE8ZV^dYk4EOPCyj!oub+X0hM=5k2R&n?i)Oo3|WWoKpt0HB~E>;M1& delta 113 zcmbOrFhO8L2@~f(^@6+dj0_AMllj@qCU0h{Wl?AN+%!3kRef?avkeoF+0QDqc{8&x wBa6wYtap=7u}pxe(1*yDvp75wyE2)JZ3j$3nad$LKes?HGX<)hmz|jr0D+b!iU0rr diff --git a/lib/Hd_MvCamera_module_GENTL.exp b/lib/Hd_MvCamera_module_GENTL.exp index ebd6dce5c4074d58a4d8a8aeb34c9ed2980064e3..baf006bd011aee4aa70aba1d534a1396c11e5b8d 100644 GIT binary patch delta 143 zcmeyu`i+${rHzTZBqpgeGbbgc!puas rC^aWFu{f0>wIUUyF06R+0Y-6l3q50FLt}%<_ZXd+vKl8VF?18v delta 159 zcmeyy`h}GBpEpA`gRLM#a(N1ar&UaHW^r=9V}536W=wu*Nla2{W=={>g_()2 zOKMVSIzwtjDuatvOjxjyfss*6m~%`>etu4IjBhZIX=tKnY^i5#Y-(sZ`2nL7)90qi HDomFE9%M4- diff --git a/lib/Hd_MvCamera_module_GENTL.lib b/lib/Hd_MvCamera_module_GENTL.lib index 578b535ee41c6c12f7e6ab81feeae0134eac1aaf..4010f0a3da11c6819056f7133313cf8a23370e79 100644 GIT binary patch delta 118 zcmew&@I_$53?`O;Zc(o%&tclnqQ;QbI60mZBqpgeGbbgc!puas rC^aWFu{f0>wIUUyF06R+enxS23q50FLt}%BpEpA`gRLM#a(N1ar&UaHW^r=9V}536W=wu*Nla2{W=={>g_()2 rOKMVSIzwtjDuatvOjz*bgN)+rmU_ml@!pp2oC~MU5e=aq=uy^~v?jPE0`NX;!JtcbVlGS)TPV-XJB3aIQ)aT5(x04xJn+a delta 108 zcmaDN@I+w4BqkQ4S+m|wp2oC~MV;Yu)8tvK>XYl4otS{k)2vdP?=s6XvY5Ryxjl(> s8ccycM6#SUOQrAa+sTZq@{`lp=D}o@xg3)7a|`q`Q=mrpvx_nU04H}TWB>pF diff --git a/lib/Hd_ResultsSummary_module.exp b/lib/Hd_ResultsSummary_module.exp index 98647907b2b4e1df2047e01da5a2bdbd7906bfd5..d575f63f09fb61afd1b239332f2dfe9e5811ad61 100644 GIT binary patch delta 143 zcmeyu`i+${rHzTZBqpgeGbbgc!puas rC^aWFu{f0>wIUUyF06R+0Y-6l3q50FLt}%<_ZXd+vKl8VF?18v delta 159 zcmeyy`h}GBpEpA`gRLM#a(N1ar&UaHW^r=9V}536W=wu*Nla2{W=={>g_()2 zOKMVSIzwtjDuatvOjxjyfss*6m~%`>etu4IjBhZIX=tKnY^i5#Y-(sZ`2nL7)90qi HDomFE9%M4- diff --git a/lib/Hd_ResultsSummary_module.lib b/lib/Hd_ResultsSummary_module.lib index ff33633f3db52aec9c9ccb88fc9c624c2109a9d1..8baafc1c7adb77e35051dfe8ea37dc3b629b4297 100644 GIT binary patch delta 117 zcmew&@I_$53?^o+dy^*5W;(#4#*o!GIi5M2DXVew8D=X+&JQ+8e@-zlFfdJC$Rs^k xi?tl4M1ArZRt})D$!D0QCVya!<9s*6;o>`}O0&tmY%MUA$_SOxn`7C<83B{oC#(Pf delta 117 zcmew&@I_$53?}BnwZ|vVW;(#4&hWWuay)Z3)90qmXPB)RIsaXl@bDA^0|V3Kg-p_u ywOGqxO4KKxVdVfSn|y{@YVrrxI8L`KOHaRpsx+J2%hm!@sf~%rHzTetu4IjBhZIX=tKnY@ugtY-nsS`7_fqrmV)zx0#uk04dZf2LJ#7 delta 139 zcmcc5eV3avrHzTQM&7B63=C!rjDie6;5pfq$yr&Q;d2uMgKuVX zQGRiLT8V;2kfwrOENW?}*W^2sX_ diff --git a/lib/Hd_SocketModule_ModbusTcp.lib b/lib/Hd_SocketModule_ModbusTcp.lib index 7d987e797c1925944487933e8b6ed09e14a3773c..b3ff8f19c2b7f22a232105edac9723e1a30fca2a 100644 GIT binary patch delta 108 zcmew+^-XHSI~LA!vnzkN7c@4(_u=wNxPHmXh?VS6W0bcJXg#Z8m