diff --git a/Doc/AOI检测软件SOP-1.0.pptx b/Doc/AOI检测软件SOP-1.0.pptx new file mode 100644 index 00000000..9eb3e1e1 Binary files /dev/null and b/Doc/AOI检测软件SOP-1.0.pptx differ diff --git a/Doc/交互逻辑.xls b/Doc/交互逻辑.xls new file mode 100644 index 00000000..aa82785c Binary files /dev/null and b/Doc/交互逻辑.xls differ diff --git a/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h b/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h index f64fd8a4..03f74266 100644 --- a/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h +++ b/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h @@ -215,6 +215,7 @@ void ALGO_Inspection(std::shared_ptr data, handleAiModelManager* _hand qDebug() << __FUNCDNAME__ << __LINE__ << "errorCheck ERR"<< errorCode; return; } + data->algoStartTime = std::chrono::high_resolution_clock::now(); cv::Mat src = data->oriImgs[0]; //ʹÓÃdet»ñȡÿ¸ö¹«ͷµÄλÖà std::vector detResult = pinDetEvaluate(data,src, _handleAiModelManager); diff --git a/HanddleAI/HandleAiUi-new/back/backEndManager.h b/HanddleAI/HandleAiUi-new/back/backEndManager.h index 7ed3e826..58778e60 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndManager.h +++ b/HanddleAI/HandleAiUi-new/back/backEndManager.h @@ -59,6 +59,7 @@ signals: void resetDashBoard();//reset dashBoard void switchStartBtnStatusSignal(int); void addShowPerformanceWidgetData(int index,int timeCost); + void addCtData(int index, int value); void resetShowPerformanceWidget(); }; #endif \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp b/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp index 23888a86..e9f7b33a 100644 --- a/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp +++ b/HanddleAI/HandleAiUi-new/back/threadPoolManager.cpp @@ -109,8 +109,22 @@ void threadManager::resultHandle(std::shared_ptr data) cnt++; } } - emit _backEndManager->addDashBoardData(1, data->aiDetOK); - emit _backEndManager->addDashBoardData(0, data->halconOK); + if(data->armPos != -1) + { + emit _backEndManager->addDashBoardData(1, data->aiDetOK); + emit _backEndManager->addDashBoardData(0, data->halconOK); + } + + auto totalCt = std::chrono::duration_cast(data->halconEndTime - data->algoStartTime); + auto aiCt = std::chrono::duration_cast(data->handleAiEndTime - data->algoStartTime); + auto halconCt = std::chrono::duration_cast(data->halconEndTime - data->handleAiEndTime); + if (totalCt.count() > 0) + emit _backEndManager->addCtData(0, totalCt.count()); + if (aiCt.count() > 0) + emit _backEndManager->addCtData(1, aiCt.count()); + if (halconCt.count() > 0) + emit _backEndManager->addCtData(2, halconCt.count()); + //std::cout << "ct1" << totalCt.count() << "ct2" << aiCt.count() << "ct3" << halconCt.count() << std::endl; //SQL std::vector sqlDatas; for (auto sqlData : data->sqlVec) diff --git a/HanddleAI/HandleAiUi-new/main.cpp b/HanddleAI/HandleAiUi-new/main.cpp index 212157bf..b3542f03 100644 --- a/HanddleAI/HandleAiUi-new/main.cpp +++ b/HanddleAI/HandleAiUi-new/main.cpp @@ -22,6 +22,7 @@ void connectSignalAndSlots(MainWindow* front, backEndManager* back) QObject::connect(back, &backEndManager::sendInitString, front, &MainWindow::recvInitString); QObject::connect(back, &backEndManager::sendInitFinished, front, &MainWindow::recvInitFinished); QObject::connect(back, &backEndManager::addDashBoardData, front, &MainWindow::addDashBoardData); + QObject::connect(back, &backEndManager::addCtData, front, &MainWindow::addCtData); QObject::connect(back, &backEndManager::addHistoryDataSignal, front, &MainWindow::addDetHistoryData); QObject::connect(back, &backEndManager::switchStartBtnStatusSignal, front->_displayWidget->_switchProductWidget, &switchProductWidget::switchStartBtnStatus); diff --git a/HanddleAI/HandleAiUi-new/mainwindow.h b/HanddleAI/HandleAiUi-new/mainwindow.h index a8ca44d5..b55ec71c 100644 --- a/HanddleAI/HandleAiUi-new/mainwindow.h +++ b/HanddleAI/HandleAiUi-new/mainwindow.h @@ -241,6 +241,21 @@ public slots: else _displayWidget->_summaryDataManager->dashBoardWidgets[index]->addNG(); } + void addCtData(int index, int value) + { + switch (index) + { + case 0: + _displayWidget->_summaryDataManager->totalCtBar->addData(value); + break; + case 1: + _displayWidget->_summaryDataManager->halconCtBar->addData(value); + break; + case 2: + _displayWidget->_summaryDataManager->aiCtBar->addData(value); + break; + } + } //void resetDashBoard();//reset dashBoard //void addShowPerformanceWidgetData(int index, int timeCost); diff --git a/HanddleAI/HandleAiUi-new/uiModule/components/fancyProcessBar.h b/HanddleAI/HandleAiUi-new/uiModule/components/fancyProcessBar.h index 491b5ae0..d035c8f2 100644 --- a/HanddleAI/HandleAiUi-new/uiModule/components/fancyProcessBar.h +++ b/HanddleAI/HandleAiUi-new/uiModule/components/fancyProcessBar.h @@ -44,6 +44,19 @@ public: { return QSize(100, 60); } + void addData(int value) + { + maxValue = std::max(value, maxValue); + minValue = std::min(value, minValue); + currentValue = value; + if((maxValue - minValue) ==0) + setProgress(1); + else if (value == 0) + setProgress(0); + else + setProgress( value/(maxValue - minValue)); + + } void setProgress(double newProgress) { if (newProgress < 0.0) { @@ -70,9 +83,17 @@ protected: // Draw frequency text painter.setPen(Qt::white); - painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignLeft | Qt::AlignTop, QString::number(minValue)); - painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignHCenter | Qt::AlignTop, QString::number(minValue)); - painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignRight | Qt::AlignTop, QString::number(maxValue)); + + if (maxValue == INT_MIN) + painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignLeft | Qt::AlignTop, "0ms"); + else + painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignLeft | Qt::AlignTop, QString::number(minValue) + "ms"); + painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignHCenter | Qt::AlignTop, QString::number(currentValue) + "ms"); + if (maxValue == INT_MIN) + painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignRight | Qt::AlignTop, "0ms"); + else + painter.drawText(rect.adjusted(10, 10, -10, 10), Qt::AlignRight | Qt::AlignTop, QString::number(maxValue) + "ms"); + painter.drawText(rect.adjusted(10, 30, -10, -10), Qt::AlignLeft | Qt::AlignTop, "min"); painter.drawText(rect.adjusted(10, 30, -10, -10), Qt::AlignHCenter | Qt::AlignTop, title); @@ -99,11 +120,13 @@ protected: int x = barRect.left() + i * (barRect.width() / numTicks); painter.drawLine(x, barRect.top(), x, barRect.bottom()); } + init = true; } private: + bool init = false; QString title; - int maxValue = CHAR_MAX,minValue=CHAR_MIN; + int maxValue = INT_MIN, minValue = INT_MAX, currentValue = 0; int frequency =50; double progress; }; diff --git a/HanddleAI/HandleAiUi-new/uiModule/uiModule_summaryDataManager.h b/HanddleAI/HandleAiUi-new/uiModule/uiModule_summaryDataManager.h index fb0dbf3a..414f98ca 100644 --- a/HanddleAI/HandleAiUi-new/uiModule/uiModule_summaryDataManager.h +++ b/HanddleAI/HandleAiUi-new/uiModule/uiModule_summaryDataManager.h @@ -118,6 +118,9 @@ class summaryDataManager : public QObject public: fancyWidget* widget; std::vector< dashBoradDataWidget*> dashBoardWidgets; + FrequencyBar* totalCtBar; + FrequencyBar* halconCtBar; + FrequencyBar* aiCtBar; summaryDataManager() { QPalette palette; @@ -142,15 +145,17 @@ public: layout->addWidget(_dashBoradDataWidget); layout->addWidget(_dashBoradDataWidget2); - FrequencyBar* progressBar=new FrequencyBar("totalCT"); - progressBar->setProgress(0.5); - layout->addWidget(progressBar); - FrequencyBar* progressBar2 = new FrequencyBar("cc_ImageCT"); - progressBar2->setProgress(0.3); - layout->addWidget(progressBar2); - FrequencyBar* progressBar3 = new FrequencyBar("ai_ImageCT"); - progressBar3->setProgress(0.8); - layout->addWidget(progressBar3); + totalCtBar =new FrequencyBar("totalCT"); + totalCtBar->setProgress(0.0); + layout->addWidget(totalCtBar); + + halconCtBar = new FrequencyBar("cc_ImageCT"); + halconCtBar->setProgress(0.0); + layout->addWidget(halconCtBar); + + aiCtBar = new FrequencyBar("ai_ImageCT"); + aiCtBar->setProgress(0.0); + layout->addWidget(aiCtBar); } public slots: void resetAllValue()