diff --git a/HanddleAI/HandleAiUi-new/back/fileManager.h b/HanddleAI/HandleAiUi-new/back/fileManager.h index 02706493..381b8ba0 100644 --- a/HanddleAI/HandleAiUi-new/back/fileManager.h +++ b/HanddleAI/HandleAiUi-new/back/fileManager.h @@ -58,8 +58,10 @@ public: /// /// /// - static void getAllFiles(std::string path, std::vector& files, std::string format) + static void getAllFiles(std::string path, std::vector& files, std::string format, int targetDepth = INT_MAX, int depth = 0) { + if (depth >= targetDepth) + return; intptr_t hFile = 0; struct _finddata_t fileinfo; std::string p; @@ -72,7 +74,8 @@ public: if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0) { files.push_back(p.assign(path).append("\\").append(fileinfo.name)); - getAllFiles(p.assign(path).append("\\").append(fileinfo.name), files, format); + depth++; + getAllFiles(p.assign(path).append("\\").append(fileinfo.name), files, format, targetDepth ,depth); } } else @@ -84,6 +87,44 @@ public: } } /// + /// 获取文件夹下的图片,以vector返回 + /// + /// + /// + /// + static void getAllImages(std::string path, std::vector& files, std::string format, int targetDepth = INT_MAX, int depth = 0) + { + if (depth >= targetDepth) + return; + intptr_t hFile = 0; + struct _finddata_t fileinfo; + std::string p; + if ((hFile = _findfirst(p.assign(path).append("\\*" + format).c_str(), &fileinfo)) != -1) + { + do + { + if ((fileinfo.attrib & _A_SUBDIR)) + { + if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0) + { + std::string filePath = p.assign(path).append("\\").append(fileinfo.name); + if (fileManager::isImageFile(filePath) == true) + files.push_back(filePath); + depth++; + getAllFiles(filePath, files, format, targetDepth, depth); + } + } + else + { + std::string filePath = p.assign(path).append("\\").append(fileinfo.name); + if (fileManager::isImageFile(filePath) == true) + files.push_back(filePath); + } + } while (_findnext(hFile, &fileinfo) == 0); + _findclose(hFile); + } + } + /// /// 检查磁盘剩余空间,以GB为单位返回 /// /// example"E://""E://111/222"支持文件夹或者磁盘路径 @@ -191,6 +232,56 @@ public: } return true; } + //去除重复分割符 + static QString normalizePathSeparators(const QString& path) { + QString normalizedPath = path; + + // Replace backslashes with forward slashes + normalizedPath.replace('\\', '/'); + + // Remove consecutive forward slashes + QString doubleSlash = "//"; + while (normalizedPath.contains(doubleSlash)) { + normalizedPath.replace(doubleSlash, "/"); + } + + return normalizedPath; + } + + static bool isImageFile(const std::string& filename) { + const std::string imageExtensions[] = { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".webp" }; + + std::string lowerFilename = filename; + std::transform(lowerFilename.begin(), lowerFilename.end(), lowerFilename.begin(), [](unsigned char c) { return std::tolower(c); }); + + for (const std::string& ext : imageExtensions) { + if (lowerFilename.size() >= ext.size() && + lowerFilename.compare(lowerFilename.size() - ext.size(), ext.size(), ext) == 0) { + return true; + } + } + + return false; + } + static std::string getFileName(std::string path) + { + return path.substr(path.find_last_of("\\") + 1, path.find_last_of(".") - path.find_last_of("\\") - 1); + } + static QString getFileName(const QString& path) { + int lastSlashIndex = path.lastIndexOf('/'); + if (lastSlashIndex == -1) { + lastSlashIndex = path.lastIndexOf('\\'); + } + + int lastDotIndex = path.lastIndexOf('.'); + + if (lastDotIndex == -1 || lastDotIndex < lastSlashIndex) { + return path.mid(lastSlashIndex + 1); + } + else { + return path.mid(lastSlashIndex + 1, lastDotIndex - lastSlashIndex - 1); + } + } }; /// /// 自动删除文件夹,支持按日期删除,按磁盘剩余容量删除,或者两者都是,请在主线程声明qtimer diff --git a/HanddleAI/HandleAiUi-new/front/pages/historyWidget.h b/HanddleAI/HandleAiUi-new/front/pages/historyWidget.h new file mode 100644 index 00000000..e27daf12 --- /dev/null +++ b/HanddleAI/HandleAiUi-new/front/pages/historyWidget.h @@ -0,0 +1,74 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class historyWidget :public QWidget +{ +public: + QVBoxLayout* Layout = new QVBoxLayout(this); + QHBoxLayout* btnLayout = new QHBoxLayout(this); + std::vectorbtns; + QLabel* icon, * Title; + + QWidget* widgets = new QWidget(); + QGridLayout* mainWidgetLayout = new QGridLayout(widgets); + + ImageWidget imageWidget; + menuListWidget dirListWidget; + historyShowListWidget _historyShowListWidget; + historyWidget() + { + QPalette palette; + palette.setColor(QPalette::WindowText, Qt::white); + QFont font("微软雅黑", 24, QFont::Bold); + QFont font2("微软雅黑", 108, QFont::Bold); + + widgets->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + widgets->setMaximumSize(9999, 9999); + + this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + this->setMaximumSize(9999, 9999); + this->setObjectName("historyWidget"); + + Layout->setContentsMargins(0, 0, 0, 0); + Layout->setAlignment(Qt::AlignLeft | Qt::AlignTop); + + Title = new QLabel(u8"历史图片"); + Title->setFont(font); + Title->setPalette(palette); + Title->setAlignment(Qt::AlignLeft); + + Layout->addWidget(Title); + + btnLayout->setContentsMargins(0, 0, 0, 0); + btnLayout->setAlignment(Qt::AlignLeft); + + Layout->addLayout(btnLayout); + + mainWigetInit(); + Layout->addWidget(widgets); + QObject::connect(&_historyShowListWidget._historyShowListSubThread, &historyShowListSubThread::readImgSignal, &imageWidget, &ImageWidget::showImgOnGraphicsView); + } + void mainWigetInit() + { + imageWidget.setTitle("图片查看"); + mainWidgetLayout->addWidget(&imageWidget , 0, 0); + mainWidgetLayout->setColumnStretch(0, 5); + + mainWidgetLayout->addWidget(&dirListWidget, 0, 1); + mainWidgetLayout->addWidget(&_historyShowListWidget, 0, 2); + mainWidgetLayout->setColumnStretch(1, 1); + mainWidgetLayout->setColumnStretch(2, 2); + + dirListWidget.setStyleSheet("background: transparent;"); + QObject::connect(&dirListWidget, &menuListWidget::switchPathSignal, &_historyShowListWidget, &historyShowListWidget::addImgFromPath); + } +}; +#pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/globalStruct.h b/HanddleAI/HandleAiUi-new/globalStruct.h index 20a799ee..1c18d956 100644 --- a/HanddleAI/HandleAiUi-new/globalStruct.h +++ b/HanddleAI/HandleAiUi-new/globalStruct.h @@ -101,10 +101,6 @@ static void cvMatToQPixMap(cv::Mat& src,QPixmap& pixmap) { pixmap = QPixmap::fromImage(cvMatToQImage(src)); } -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*) #pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/icon.qrc b/HanddleAI/HandleAiUi-new/icon.qrc index ad35f767..ad42f0da 100644 --- a/HanddleAI/HandleAiUi-new/icon.qrc +++ b/HanddleAI/HandleAiUi-new/icon.qrc @@ -23,6 +23,7 @@ icon/fullscreen-exit.png icon/minus.png icon/home.png + icon/home2.png icon/config.png icon/menu.png icon/save.png @@ -33,5 +34,7 @@ icon/loading.gif icon/sql.png icon/error.png + icon/history.png + icon/rollback.png diff --git a/HanddleAI/HandleAiUi-new/icon/history.png b/HanddleAI/HandleAiUi-new/icon/history.png new file mode 100644 index 00000000..baa3a5b8 Binary files /dev/null and b/HanddleAI/HandleAiUi-new/icon/history.png differ diff --git a/HanddleAI/HandleAiUi-new/icon/home2.png b/HanddleAI/HandleAiUi-new/icon/home2.png new file mode 100644 index 00000000..4245af6d Binary files /dev/null and b/HanddleAI/HandleAiUi-new/icon/home2.png differ diff --git a/HanddleAI/HandleAiUi-new/icon/rollback.png b/HanddleAI/HandleAiUi-new/icon/rollback.png new file mode 100644 index 00000000..2346fdfc Binary files /dev/null and b/HanddleAI/HandleAiUi-new/icon/rollback.png differ diff --git a/HanddleAI/HandleAiUi-new/mainwindow.cpp b/HanddleAI/HandleAiUi-new/mainwindow.cpp index 7c90f6c1..b85e3c4e 100644 --- a/HanddleAI/HandleAiUi-new/mainwindow.cpp +++ b/HanddleAI/HandleAiUi-new/mainwindow.cpp @@ -209,6 +209,7 @@ void MainWindow::leftBarInit() pageWidgets.addWidget(_configSettingWidget); pageBtns.push_back(configBtn); + //手动检测 toolBarButton* manulDet = new toolBarButton( defaultWidth, defaultHeight, @@ -218,6 +219,16 @@ void MainWindow::leftBarInit() pageWidgets.addWidget(_manualDetWidget); pageBtns.push_back(manulDet); + //历史图片 + toolBarButton* historyImgs = new toolBarButton( + defaultWidth, + defaultHeight, + QIcon(":/topBar/icon/history.png"), + u8"历史图片"); + _historyWidget = new historyWidget(); + pageWidgets.addWidget(_historyWidget); + pageBtns.push_back(historyImgs); + //日志页面 toolBarButton* logBtn = new toolBarButton( defaultWidth, @@ -228,6 +239,7 @@ void MainWindow::leftBarInit() pageWidgets.addWidget(_logWidget); pageBtns.push_back(logBtn); + //SQL toolBarButton* sqlBtn = new toolBarButton( defaultWidth, defaultHeight, diff --git a/HanddleAI/HandleAiUi-new/mainwindow.h b/HanddleAI/HandleAiUi-new/mainwindow.h index 55ddff7d..78a14a63 100644 --- a/HanddleAI/HandleAiUi-new/mainwindow.h +++ b/HanddleAI/HandleAiUi-new/mainwindow.h @@ -25,6 +25,7 @@ #include #include #include +#include #pragma execution_character_set("utf-8") @@ -52,6 +53,7 @@ public: logWidget* _logWidget; sqlControlWidget* _sqlControlWidget; manualDetWidget* _manualDetWidget; + historyWidget* _historyWidget; private: Ui::MainWindow* ui; fbBridge* fbBridgePtr; @@ -98,7 +100,6 @@ public slots: showMinimized(); } - void toggleMaximize(toggleMaximizeEnum toggleMaximizeEnumIn = reverse) { switch (toggleMaximizeEnumIn) diff --git a/HanddleAI/HandleAiUi-new/uiModule/uiModule_historyListWidget.h b/HanddleAI/HandleAiUi-new/uiModule/uiModule_historyListWidget.h index 9e912756..54be4d28 100644 --- a/HanddleAI/HandleAiUi-new/uiModule/uiModule_historyListWidget.h +++ b/HanddleAI/HandleAiUi-new/uiModule/uiModule_historyListWidget.h @@ -4,49 +4,152 @@ #include #include #include -class historyItem : public QWidget +#include +#include +class historyItemWidget : public QWidget { public: QGridLayout* layout = new QGridLayout(this); - QLabel* resultShow = new QLabel("测试测试"); + QLabel* resultLabel = new QLabel(this); + QLabel* fileNameLabel = new QLabel(this); + QLabel* filePathHide = new QLabel(this); + QLabel* imgShow = new QLabel(); - //QIcon* icon = new QIcon(":/topBar/icon/fullscreen.png"); - historyItem() + historyItemWidget(QString title,std::string filePath,QPixmap img , QSize parentSize) { - layout->addWidget(resultShow,0,0); - imgShow->setPixmap(QPixmap(":/topBar/icon/waiting.png")); + if (img.isNull()) + return; + QFont font("微软雅黑", 12, QFont::Bold); + + resultLabel->setText(title); + resultLabel->setFont(font); + resultLabel->setStyleSheet("QLabel { color: white; }"); + layout->addWidget(resultLabel,0,0); + + filePathHide->setText(QString::fromStdString(filePath)); + filePathHide->hide(); + filePathHide->setObjectName("path"); + + fileNameLabel->setText(QString::fromStdString(fileManager::getFileName(filePath))); + fileNameLabel->setFont(font); + fileNameLabel->setStyleSheet("QLabel { color: white; }"); + layout->addWidget(fileNameLabel, 1, 0); + + int iHeight = img.size().height(); + int pHeight = (parentSize.height() / 5); + double widthScale = iHeight / pHeight; + + img = img.scaled(img.size().width() * widthScale, parentSize.height() / 5, Qt::KeepAspectRatio, Qt::SmoothTransformation); + imgShow->setPixmap(img); layout->addWidget(imgShow,0,1); + layout->setContentsMargins(0, 0, 0, 0); } }; +class historyShowListSubThread : public QThread +{ + Q_OBJECT +public: + QMutex queueMutex; + QQueue> queue; + void run() + { + while (queue.size() > 0) + { + queueMutex.lock(); + std::pair data = queue.dequeue(); + queueMutex.unlock(); + if (data.first == 0) + { + cv::Mat mat = cv::imread(data.second, cv::IMREAD_REDUCED_COLOR_8); + if (mat.empty() == true) + continue; + QPixmap map; + cvMatToQPixMap(mat, map); + addDataSignal((data.second.find("OK") != std::string::npos), data.second, map); + } + else if (data.first == 1) + { + cv::Mat mat = cv::imread(data.second, -1); + if (mat.empty() == true) + return; + QPixmap map; + cvMatToQPixMap(mat, map); + emit readImgSignal(map); + } + } + } +public slots: + void asyncReadIcons(std::vector files) + { + for (auto file : files) + { + queueMutex.lock(); + queue.enqueue(std::make_pair(0, file)); + queueMutex.unlock(); + this->start(); + } + } + void asyncReadImg(std::string filePath) + { + queueMutex.lock(); + queue.enqueue(std::make_pair(1, filePath)); + queueMutex.unlock(); + this->start(); + } +signals: + void addDataSignal(bool isOk, std::string filePath, QPixmap img); + void readImgSignal(QPixmap img); +}; class historyShowListWidget : public QWidget { + Q_OBJECT public: QLabel* title = new QLabel(u8"历史记录"); QListWidget* showDataListWidget = new QListWidget(); QVBoxLayout* layout = new QVBoxLayout(this); + historyShowListSubThread _historyShowListSubThread; historyShowListWidget() { QPalette palette; palette.setColor(QPalette::WindowText, Qt::white); - QFont font("微软雅黑", 12, QFont::Bold); + QFont font("微软雅黑", 16, QFont::Bold); QHBoxLayout* hLayout = new QHBoxLayout(); title->setPalette(palette); title->setFont(font); + title->setStyleSheet("QLabel { color: white; }"); layout->addWidget(title); layout->addWidget(showDataListWidget); this->setStyleSheet("background: transparent;"); - - //addData(); + QObject::connect(this, &historyShowListWidget::asyncReadImgSignal, &_historyShowListSubThread, &historyShowListSubThread::asyncReadImg); + QObject::connect(this, &historyShowListWidget::asyncReadIconsSignal, &_historyShowListSubThread, &historyShowListSubThread::asyncReadIcons); + QObject::connect(&_historyShowListSubThread, &historyShowListSubThread::addDataSignal, this, &historyShowListWidget::addData); + QObject::connect(showDataListWidget, &QListWidget::itemClicked, this, &historyShowListWidget::itemClick); } - void addData(bool isOk,QPixmap& img) +public slots: + void addImgFromPath(QString path) { - QWidget* widget = new historyItem(); + std::vector files; + fileManager::getAllImages(path.toStdString(), files, "",1); + if (files.size() == 0) + return; + showDataListWidget->clear(); + emit asyncReadIconsSignal(files); + + } + void addData(bool isOk, std::string filePath, QPixmap img) + { + QString title; + if (isOk == true) + title = "OK"; + else + title = "NG"; + QWidget* widget = new historyItemWidget(title, filePath, img, size()); QListWidgetItem* item = new QListWidgetItem(); showDataListWidget->addItem(item); showDataListWidget->setItemWidget(item, widget); @@ -57,4 +160,23 @@ public: { } -}; \ No newline at end of file +private slots: + void itemClick(QListWidgetItem* item) + { + QWidget* widget = showDataListWidget->itemWidget(item); + const QList labels = widget->findChildren(); + for (const QLabel* label : labels) + { + if (label->objectName() == "path") + { + QString path = label->text(); + emit asyncReadImgSignal(path.toStdString()); + } + } + } +signals: + void asyncReadImgSignal(std::string); + void asyncReadIconsSignal(std::vector); + void itemClickSignal(QString path); +}; +#pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h b/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h index 84805a0b..2eecfee2 100644 --- a/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h +++ b/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h @@ -173,6 +173,7 @@ private: QMutex mutex; }; class ImageWidget : public QWidget { + Q_OBJECT public: ImageWidget(QWidget* parent = nullptr) : QWidget(parent) { QVBoxLayout* layout = new QVBoxLayout(this); @@ -236,6 +237,7 @@ public: void setTitle(const QString& text) { label->setText(text); } +public slots: //set不一定显示,要根据当前显示的类型决定 void setOriImg(QPixmap oriImgInput) { diff --git a/HanddleAI/HandleAiUi-new/uiModule/uiModule_menuListWdiget.h b/HanddleAI/HandleAiUi-new/uiModule/uiModule_menuListWdiget.h new file mode 100644 index 00000000..4503f6f0 --- /dev/null +++ b/HanddleAI/HandleAiUi-new/uiModule/uiModule_menuListWdiget.h @@ -0,0 +1,134 @@ +#include +#include +#include +#include +#include +#include +#include +class toolItemWidget :public QWidget +{ +public: + QHBoxLayout* layout = new QHBoxLayout(this); + fancyButton* returnBtn; + fancyButton* homeBtn; + QLabel* dirLabel = new QLabel(); + toolItemWidget(QString title) + { + QFont font("微软雅黑", 24, QFont::Bold); + QPalette palette; + palette.setColor(QPalette::WindowText, Qt::white); + + returnBtn = new fancyButton(40,40, QIcon(":/topBar/icon/rollback.png"),"返回上一级"); + layout->addWidget(returnBtn); + + homeBtn = new fancyButton(40, 40, QIcon(":/topBar/icon/home2.png"), "返回目录"); + layout->addWidget(homeBtn); + + dirLabel->setText(title); + dirLabel->setFont(font); + dirLabel->setStyleSheet("QLabel { color: white; }"); + + layout->addWidget(dirLabel); + layout->setAlignment(Qt::AlignLeft); + layout->setContentsMargins(0, 0, 0, 0); + } +}; + +class menuListWidget : public QListWidget +{ + Q_OBJECT +public: + QString basePath = bridge.back.json.imgSavePath; + menuListWidget() + { + _toolItemWidget = new toolItemWidget(basePath); + pathList.append(basePath); + refreshListWidget(); + targetDepth = pathList.size(); + _toolItemWidget->returnBtn->setDisabled(true); + _toolItemWidget->homeBtn->setDisabled(true); + QObject::connect(this, &QListWidget::itemClicked, this, &menuListWidget::itemClick); + //jumpWithPath("D://////CCD/yuantu/2024-06-04/23H/TEST"); + } + void addTools(QString title) + { + QListWidgetItem* item = new QListWidgetItem(); + this->addItem(item); + if (_toolItemWidget != nullptr) + delete _toolItemWidget; + _toolItemWidget = new toolItemWidget(title); + item->setSizeHint(_toolItemWidget->sizeHint()); + QObject::connect(_toolItemWidget->returnBtn, &QPushButton::clicked, this, &menuListWidget::returnLast); + QObject::connect(_toolItemWidget->homeBtn, &QPushButton::clicked, this, &menuListWidget::toMenu); + this->setItemWidget(item, _toolItemWidget); + } + void returnLast() + { + if (depth <= targetDepth) + return; + depth--; + pathList.removeLast(); + refreshListWidget(); + if (depth <= targetDepth) + { + _toolItemWidget->returnBtn->setDisabled(true); + _toolItemWidget->homeBtn->setDisabled(true); + } + } + void refreshListWidget() + { + this->clear(); + addTools(pathList.last()); + QString path; + for (auto p : pathList) + path.append(p + "/"); + QFont font("微软雅黑", 18, QFont::Bold); + std::vector result = fileManager::getAllDirs(path); + for (auto dirName : result) + { + QListWidgetItem* item = new QListWidgetItem(QString::fromStdString(dirName)); + item->setFont(font); + item->setForeground(QBrush(QColor(Qt::white))); + this->addItem(item); + } + emit switchPathSignal(path); + } + void toMenu() + { + jumpWithPath(basePath); + } + void jumpWithPath(QString path) + { + //分割字符串 + path = fileManager::normalizePathSeparators(path); + QStringList list = path.split("/"); + if (list.size() == 0) + list = path.split("\\"); + if (list.size() == 0) + return; + + //写入 + pathList.clear(); + depth = list.size() - 1; + for (auto str : list) + pathList.append(str); + + refreshListWidget(); + } +private: + toolItemWidget* _toolItemWidget = nullptr; + int depth = 0,targetDepth = 0; + QLinkedList pathList; +private slots: + void itemClick(QListWidgetItem* item) + { + if (item->text().isEmpty()) + return; + pathList.append(item->text()); + depth++; + refreshListWidget(); + } +signals: + void switchPathSignal(QString path); +}; +#pragma once \ No newline at end of file diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.exp b/lib/Hd_3DCameraLMI_module_PointLazer.exp index 6a8fa414..d8e955a0 100644 Binary files a/lib/Hd_3DCameraLMI_module_PointLazer.exp and b/lib/Hd_3DCameraLMI_module_PointLazer.exp differ diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.lib b/lib/Hd_3DCameraLMI_module_PointLazer.lib index 36c75b14..b04150d6 100644 Binary files a/lib/Hd_3DCameraLMI_module_PointLazer.lib and b/lib/Hd_3DCameraLMI_module_PointLazer.lib differ diff --git a/lib/Hd_DalsaCamera_module.exp b/lib/Hd_DalsaCamera_module.exp index da2ea450..27cfbc16 100644 Binary files a/lib/Hd_DalsaCamera_module.exp and b/lib/Hd_DalsaCamera_module.exp differ diff --git a/lib/Hd_DalsaCamera_module.lib b/lib/Hd_DalsaCamera_module.lib index cc2d36e5..9c451b2e 100644 Binary files a/lib/Hd_DalsaCamera_module.lib and b/lib/Hd_DalsaCamera_module.lib differ diff --git a/lib/Hd_FinsTcp_module.exp b/lib/Hd_FinsTcp_module.exp index 26d6e581..8842446e 100644 Binary files a/lib/Hd_FinsTcp_module.exp and b/lib/Hd_FinsTcp_module.exp differ diff --git a/lib/Hd_FinsTcp_module.lib b/lib/Hd_FinsTcp_module.lib index a50e177e..f679fdae 100644 Binary files a/lib/Hd_FinsTcp_module.lib and b/lib/Hd_FinsTcp_module.lib differ diff --git a/lib/Hd_MvCamera_module_GENTL.exp b/lib/Hd_MvCamera_module_GENTL.exp index 6429d839..ebd6dce5 100644 Binary files a/lib/Hd_MvCamera_module_GENTL.exp and b/lib/Hd_MvCamera_module_GENTL.exp differ diff --git a/lib/Hd_MvCamera_module_GENTL.lib b/lib/Hd_MvCamera_module_GENTL.lib index a65c613a..578b535e 100644 Binary files a/lib/Hd_MvCamera_module_GENTL.lib and b/lib/Hd_MvCamera_module_GENTL.lib differ diff --git a/lib/Hd_MvCamera_module_GIGE.exp b/lib/Hd_MvCamera_module_GIGE.exp index 08f548f7..1d1dc4c0 100644 Binary files a/lib/Hd_MvCamera_module_GIGE.exp and b/lib/Hd_MvCamera_module_GIGE.exp differ diff --git a/lib/Hd_MvCamera_module_GIGE.lib b/lib/Hd_MvCamera_module_GIGE.lib index b1396b9b..f5ba12df 100644 Binary files a/lib/Hd_MvCamera_module_GIGE.lib and b/lib/Hd_MvCamera_module_GIGE.lib differ diff --git a/lib/Hd_ResultsSummary_module.exp b/lib/Hd_ResultsSummary_module.exp index e310258b..98647907 100644 Binary files a/lib/Hd_ResultsSummary_module.exp and b/lib/Hd_ResultsSummary_module.exp differ diff --git a/lib/Hd_ResultsSummary_module.lib b/lib/Hd_ResultsSummary_module.lib index a61fbd40..ff33633f 100644 Binary files a/lib/Hd_ResultsSummary_module.lib and b/lib/Hd_ResultsSummary_module.lib differ diff --git a/lib/Hd_SocketModule_ModbusTcp.exp b/lib/Hd_SocketModule_ModbusTcp.exp index 49ff857d..30c37bd2 100644 Binary files a/lib/Hd_SocketModule_ModbusTcp.exp and b/lib/Hd_SocketModule_ModbusTcp.exp differ diff --git a/lib/Hd_SocketModule_ModbusTcp.lib b/lib/Hd_SocketModule_ModbusTcp.lib index 5ec47732..7d987e79 100644 Binary files a/lib/Hd_SocketModule_ModbusTcp.lib and b/lib/Hd_SocketModule_ModbusTcp.lib differ