From b450f4e040dee1da4af7ad13f0ccc651065f6c54 Mon Sep 17 00:00:00 2001 From: "bob.pan" Date: Fri, 3 Dec 2021 11:00:06 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E5=90=8D=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=90=8C=E6=AD=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=A8=A1=E6=9D=BF=E8=AF=86=E5=88=AB=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E5=90=8D=E5=92=8C=E6=B0=94=E9=97=A8=E8=8A=AF=E5=AE=9A=E4=BD=8D?= =?UTF-8?q?=E5=9E=8B=E5=8F=B7=E5=90=8D=202=E3=80=81=E6=B0=94=E9=97=A8?= =?UTF-8?q?=E8=8A=AF=E5=AE=9A=E4=BD=8D=E6=A0=87=E5=AE=9A=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E5=88=B7=E6=96=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=203=E3=80=81=E6=B0=94=E9=97=A8=E8=8A=AF=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=E6=A3=80=E6=B5=8B=E7=AE=97=E6=B3=95=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=9C=86=E5=BF=83=E5=81=8F=E7=A7=BB=E5=8F=82=E6=95=B0=E9=98=88?= =?UTF-8?q?=E5=80=BC=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=BC=80?= =?UTF-8?q?=E6=94=BE=E5=88=B0=E8=B0=83=E5=8F=82=E9=A1=B5=E9=9D=A2=204?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0ROI=E5=9C=86=E5=BF=83=E5=9D=90?= =?UTF-8?q?=E6=A0=87=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3part/tadpole/include/tpBase/lpbengine.h | Bin 30438 -> 30722 bytes src/lpbdesigner/DsgRoiDlg.cpp | 10 ++ src/lpbdesigner/DsgRoiDlg.h | 4 +- src/lpbdesigner/MainFrame.cpp | 18 ++- src/lpbdesigner/RoiDlg.ui | 84 +++++++----- src/lpbdesigner/RoiScene.cpp | 35 ++++- src/lpbdesigner/RoiScene.h | 1 - src/lpbengine/Solution.cpp | 16 +++ src/lpbengine/Solution.h | 1 + src/lpbengine/SolutionMgr.cpp | 12 +- src/lpbengine/Task.cpp | 18 +++ src/lpbengine/Task.h | 1 + tpvs17/Enchanter/Enchanter.aps | Bin 212356 -> 212216 bytes tpvs17/Enchanter/Enchanter.rc | Bin 5088 -> 5078 bytes tpvs17/lpCoreCtrl/lpCoreCtrl.aps | Bin 0 -> 2552 bytes tpvs17/lpCoreCtrl/lpCoreCtrl.rc | Bin 0 -> 4524 bytes tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj | 4 + tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj.filters | 6 + tpvs17/lpCoreCtrl/resource.h | 14 ++ tpvs17/lpbengine/lpbengine.aps | Bin 0 -> 2560 bytes tpvs17/lpbengine/lpbengine.rc | Bin 0 -> 4544 bytes tpvs17/lpbengine/lpbengine.vcxproj | 6 + tpvs17/lpbengine/lpbengine.vcxproj.filters | 8 ++ tpvs17/lpbengine/resource1.h | 14 ++ tpvs17/lpdesigner/QSetCenterDlg.cpp | 55 ++++++++ tpvs17/lpdesigner/QSetCenterDlg.h | 24 ++++ tpvs17/lpdesigner/QSetCenterDlg.ui | 76 +++++++++++ tpvs17/lpdesigner/lpdesigner.aps | Bin 1324 -> 0 bytes tpvs17/lpdesigner/lpdesigner.vcxproj | 32 +++++ tpvs17/lpdesigner/lpdesigner.vcxproj.filters | 24 ++++ tpvs17/lpdesigner/lpdesigner1.aps | Bin 0 -> 2576 bytes tpvs17/lpdesigner/lpdesigner1.rc | Bin 0 -> 4548 bytes tpvs17/lpdesigner/resource2.h | 14 ++ tpvs17/tpMain/QAlgParamDlg.cpp | 7 +- tpvs17/tpMain/QModelMgrDlg.cpp | 2 + tpvs17/tpMain/QPLCDevice.cpp | 1 + tpvs17/tpMain/QPLCDevice.h | 1 + tpvs17/tpMain/lpMainWin.cpp | 19 ++- tpvs17/tpMain/lpMainWin.h | 1 + tpvs17/valueMainUI/dumpfile.h | 129 ++++++++++++++++++ tpvs17/valueMainUI/main.cpp | 2 + tpvs17/valueMainUI/valueMainUI.cpp | 29 +++- tpvs17/valueMainUI/valueMainUI.h | 3 +- tpvs17/valueMainUI/valueMainUI.vcxproj | 1 + .../valueMainUI/valueMainUI.vcxproj.filters | 3 + tpvs17/valveDetector/algEg.cpp | 7 +- 46 files changed, 622 insertions(+), 60 deletions(-) create mode 100644 tpvs17/lpCoreCtrl/lpCoreCtrl.aps create mode 100644 tpvs17/lpCoreCtrl/lpCoreCtrl.rc create mode 100644 tpvs17/lpCoreCtrl/resource.h create mode 100644 tpvs17/lpbengine/lpbengine.aps create mode 100644 tpvs17/lpbengine/lpbengine.rc create mode 100644 tpvs17/lpbengine/resource1.h create mode 100644 tpvs17/lpdesigner/QSetCenterDlg.cpp create mode 100644 tpvs17/lpdesigner/QSetCenterDlg.h create mode 100644 tpvs17/lpdesigner/QSetCenterDlg.ui delete mode 100644 tpvs17/lpdesigner/lpdesigner.aps create mode 100644 tpvs17/lpdesigner/lpdesigner1.aps create mode 100644 tpvs17/lpdesigner/lpdesigner1.rc create mode 100644 tpvs17/lpdesigner/resource2.h create mode 100644 tpvs17/valueMainUI/dumpfile.h diff --git a/3part/tadpole/include/tpBase/lpbengine.h b/3part/tadpole/include/tpBase/lpbengine.h index c93cb61ef31216d3ae37a55953ef0020639275cf..a713d31784c71c0544951d0e51a529ae72919195 100644 GIT binary patch delta 128 zcmaF%ma*vrlrTqv2zQB diff --git a/src/lpbdesigner/DsgRoiDlg.cpp b/src/lpbdesigner/DsgRoiDlg.cpp index ec098a8..72bbbeb 100644 --- a/src/lpbdesigner/DsgRoiDlg.cpp +++ b/src/lpbdesigner/DsgRoiDlg.cpp @@ -2,6 +2,7 @@ #include "ui_RoiDlg.h" #include "colossusbase.h" #include "QPalette" +#include "QSetCenterDlg.h" #define WINDOWS_ICON ":/resource/app.png" @@ -45,6 +46,7 @@ CDsgRoiDlg::CDsgRoiDlg(QWidget *parent) : QDialog(parent), ui(new Ui::RoiDlg) connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(OnCancel())); connect(ui->pushButton_7, SIGNAL(clicked()), this, SLOT(OnCircle())); connect(ui->pushButton_8, SIGNAL(clicked()), this, SLOT(OnShowColorDlg())); + ui->pushButton_8->setAutoDefault(false); connect(ui->pushButton_5, SIGNAL(clicked()), this, SLOT(OnShowTenFlag())); @@ -52,6 +54,7 @@ CDsgRoiDlg::CDsgRoiDlg(QWidget *parent) : QDialog(parent), ui(new Ui::RoiDlg) m_pRoiScene = new RoiScene(this); m_pRoiScene->SetGraphicsView(ui->graphicsView); m_pRoiScene->SetInfoLable(ui->label_pixel_info); + connect(m_pRoiScene, SIGNAL(sgResetItem(QPoint, QRect)), this, SLOT(onROIMove(QPoint, QRect))); connect(ui->m_pbUp, SIGNAL(clicked()), this, SLOT(OnMove())); connect(ui->m_pbLeft, SIGNAL(clicked()), this, SLOT(OnMove())); @@ -467,6 +470,7 @@ void CDsgRoiDlg::showEvent(QShowEvent *evt) return; m_pRoiScene->Initialize(m_tempRoiData); m_pRoiScene->DisableMenu(false); + ui->label_2->clear(); } void CDsgRoiDlg::OnZoomIn() @@ -495,3 +499,9 @@ void CDsgRoiDlg::changeEvent(QEvent *event) ui->retranslateUi(this); } } + +Q_SLOT void CDsgRoiDlg::onROIMove(QPoint pos, QRect rect) +{ + ui->label_2->setText(QString("center:[%1,%2]").arg(pos.x()).arg(pos.y())); +} + diff --git a/src/lpbdesigner/DsgRoiDlg.h b/src/lpbdesigner/DsgRoiDlg.h index 86ced8e..58bf23e 100644 --- a/src/lpbdesigner/DsgRoiDlg.h +++ b/src/lpbdesigner/DsgRoiDlg.h @@ -25,9 +25,11 @@ public: virtual void OnSetParam(IDetectorTask* pTask){} virtual void showEvent(QShowEvent *evt); Q_SLOT void onSliderChange(int value); + Q_SLOT void onROIMove(QPoint pos, QRect rect); protected: virtual void changeEvent(QEvent *event); -public slots : + +public slots: bool OnOk(); bool OnCancel(); void OnRectangle(); diff --git a/src/lpbdesigner/MainFrame.cpp b/src/lpbdesigner/MainFrame.cpp index 91e7de1..ff0af7a 100644 --- a/src/lpbdesigner/MainFrame.cpp +++ b/src/lpbdesigner/MainFrame.cpp @@ -744,6 +744,12 @@ bool CMainFrame::OnSetAlgo() m_tParamMgrDlg.setWindowModality(Qt::ApplicationModal); m_tParamMgrDlg.setAttribute(Qt::WA_ShowModal, true); m_tParamMgrDlg.ShowParamMgrDlg(pAlgo); + + QString strName = m_pCurrentTask->GetTaskInfo()->strName; + if (!m_TaskChangeList.contains(strName)) + { + m_TaskChangeList.append(strName); + } } } return true; @@ -774,6 +780,12 @@ bool CMainFrame::OnSetOutParam() m_tParamMgrDlg.setWindowModality(Qt::ApplicationModal); m_tParamMgrDlg.setAttribute(Qt::WA_ShowModal, true); m_tParamMgrDlg.ShowParamMgrDlg(pAlgo); + + QString strName = m_pCurrentTask->GetTaskInfo()->strName; + if (!m_TaskChangeList.contains(strName)) + { + m_TaskChangeList.append(strName); + } } } return true; @@ -1186,7 +1198,7 @@ bool CMainFrame::OnEditParam() AlgoParamType type; PLP_ALGORITHM_PARAM pParam = NULL; pParam = m_pCurrentAlgo->GetParamByName(strParaName); - if (pParam) + if (pParam)//编辑算法参数 { if (!m_tParamDlg.InitGraphView()) return false; @@ -1196,13 +1208,15 @@ bool CMainFrame::OnEditParam() m_tParamDlg.setWindowModality(Qt::ApplicationModal); m_tParamDlg.setAttribute(Qt::WA_ShowModal, true); m_tParamDlg.ShowParamDlg(pParam); - if (_pOldTask) + if (_pOldTask)//编辑完成 输出信息 { QString st = _pOldTask->GetTaskInfo()->strName; if (!m_TaskChangeList.contains(st)) { m_TaskChangeList.append(st); } + //自动刷新算法参数栏 + OnInitCurrentAlgoParam(); } return true; } diff --git a/src/lpbdesigner/RoiDlg.ui b/src/lpbdesigner/RoiDlg.ui index 50493b6..ee8230f 100644 --- a/src/lpbdesigner/RoiDlg.ui +++ b/src/lpbdesigner/RoiDlg.ui @@ -230,27 +230,17 @@ 0 - - - - Qt::Vertical - - - - 20 - 40 - + + + + false - - - - ... - :/resource/caret-up.png:/resource/caret-up.png + :/resource/btn-close.png:/resource/btn-close.png @@ -258,11 +248,39 @@ 32 + + false + + + false + + + false + + + QToolButton::DelayedPopup + true + + Qt::NoArrow + + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -323,17 +341,14 @@ - - - - false - + + ... - :/resource/btn-close.png:/resource/btn-close.png + :/resource/caret-up.png:/resource/caret-up.png @@ -341,24 +356,9 @@ 32 - - false - - - false - - - false - - - QToolButton::DelayedPopup - true - - Qt::NoArrow - @@ -368,6 +368,18 @@ + + + + + 12 + + + + + + + diff --git a/src/lpbdesigner/RoiScene.cpp b/src/lpbdesigner/RoiScene.cpp index ca44b5c..ec9d9f7 100644 --- a/src/lpbdesigner/RoiScene.cpp +++ b/src/lpbdesigner/RoiScene.cpp @@ -4,6 +4,7 @@ #include "RoiItem.h" #include "QGraphicsSceneEvent" #include "colossusbase.h" +#include "QSetCenterDlg.h" #pragma execution_character_set("utf-8") RoiScene::RoiScene(QObject *parent) @@ -55,6 +56,7 @@ void RoiScene::mouseEvent(QGraphicsSceneMouseEvent *mouseEvent) bool RoiScene::Initialize(LP_DETECTOR_ROI_DATA roiData) { + if (pLineItem) { removeItem(pLineItem); @@ -300,6 +302,7 @@ void RoiScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) if (tool) tool->mouseMoveEvent(mouseEvent, this); QGraphicsScene::mouseMoveEvent(mouseEvent); + emit sgResetItem(maptoImgPos(item->scenePos()), item->boundingRect().toRect()); } else { @@ -327,7 +330,7 @@ void RoiScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) if (item != 0) { //m_pRoiDlg->ResetItem(maptoImgPos(mouseEvent->scenePos()), item->boundingRect().toRect()); - emit sgResetItem(maptoImgPos(mouseEvent->scenePos()), item->boundingRect().toRect()); + emit sgResetItem(maptoImgPos(item->scenePos()), item->boundingRect().toRect()); m_graphItemMapStruct[item].rectf = maptoImgNewPos(item); DrawTool::c_drawShape = selection; QGraphicsScene::mouseReleaseEvent(mouseEvent); @@ -343,8 +346,10 @@ void RoiScene::MoveSelectedItem(DirType type, int step) if (items.count() == 1) item = qgraphicsitem_cast(items.first()); + if (item != 0 && !item->GetCheckState()) { + //item->setPos(0, 0); switch (type) { case LEFT: @@ -534,7 +539,9 @@ void RoiScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) } } } - + menu.addSeparator(); + QAction *setCenter = menu.addAction(QObject::tr("设置圆心")); + setCenter->setObjectName("setCenter"); QAction *selectedAction = menu.exec(event->screenPos()); if (selectedAction == NULL) { @@ -717,6 +724,30 @@ void RoiScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) } updateLineItem(); } + else if (strObj == "setCenter") + { + if (ptmpItem) + { + QPointF s = maptoImgPos(ptmpItem->scenePos()); + QSetCenterDlg dlg((QWidget*)(this->parent())); + dlg.setCenter(s.x(),s.y()); + dlg.setRange(ptmpItem->boundingRect().toRect(), mImgPosOffSet * 2); + if (dlg.exec() == QDialog::Accepted) + { + double x = 0; + double y = 0; + dlg.getCenter(x, y); + QPointF itemPoint; + itemPoint.setX(x); + itemPoint.setY(y); + QPointF tt = itemPoint - mImgPosOffSet; + QPointF fff = maptoImgPos(tt); + ptmpItem->setPos(tt); + } + m_graphItemMapStruct[ptmpItem].rectf = maptoImgNewPos(ptmpItem); + } + + } QGraphicsScene::contextMenuEvent(event); menu.clear(); update(); diff --git a/src/lpbdesigner/RoiScene.h b/src/lpbdesigner/RoiScene.h index df934da..6f4ad2d 100644 --- a/src/lpbdesigner/RoiScene.h +++ b/src/lpbdesigner/RoiScene.h @@ -67,7 +67,6 @@ public: void updateTenItem(bool bFlag); int flag{ 0 }; bool bUseTenFlag{ false }; - signals: void sgResetItem(QPoint pos, QRect size); protected: diff --git a/src/lpbengine/Solution.cpp b/src/lpbengine/Solution.cpp index 584dc31..726b362 100644 --- a/src/lpbengine/Solution.cpp +++ b/src/lpbengine/Solution.cpp @@ -141,6 +141,19 @@ bool Solution::DeleteTask(QString strName) return false; } +bool Solution::ModifyTask(QString strOldName, QString strNewName) +{ + QMap::iterator its = m_TaskMapByName.find(strOldName); + if (its != m_TaskMapByName.end()) + { + (*its)->RenameFile(strOldName, strNewName); + IDetectorTask* pTask = m_TaskMapByName.take(strOldName); + m_TaskMapByName.insert(strNewName, pTask); + return true; + } + return false; +} + IDetectorTask* Solution::GetTaskByName(QString strName) { QMap::iterator its = m_TaskMapByName.find(strName); @@ -383,6 +396,9 @@ bool Solution::LoadFileEx(const QString& strPath) m_tasklist.append(taskName); QString strTaskPath = strPath + "/" + taskName; + QDir qDir(strTaskPath); + if (!qDir.exists()) + continue; LP_DETECTOR_TASK Task; Task.strName = taskName; CDetectorTask* pTask = (CDetectorTask*)AddTask(&Task, strTaskPath);//有隐藏bug diff --git a/src/lpbengine/Solution.h b/src/lpbengine/Solution.h index 8bac303..13b4316 100644 --- a/src/lpbengine/Solution.h +++ b/src/lpbengine/Solution.h @@ -11,6 +11,7 @@ public: virtual bool AddTaskByTemplate(QString strName); virtual IDetectorTask* AddTask(const PLP_DETECTOR_TASK pTask); virtual bool DeleteTask(QString strName); + virtual bool ModifyTask(QString strOldName, QString strNewName); virtual IDetectorTask* GetTaskByName(QString strName); virtual QStringList GetAllTaskNames(); virtual QMap GetAllTasks(); diff --git a/src/lpbengine/SolutionMgr.cpp b/src/lpbengine/SolutionMgr.cpp index 64c2d54..670e7bd 100644 --- a/src/lpbengine/SolutionMgr.cpp +++ b/src/lpbengine/SolutionMgr.cpp @@ -140,6 +140,7 @@ bool CDetectorSolutionMgr::SaveByNames(QStringList strNames) //加载配置文件 bool CDetectorSolutionMgr::Load() { + /*在应用程序的根目录下寻找solution文件夹,没有即创建*/ QString strExePath = QCoreApplication::applicationDirPath(); QString strSolutionDirPath = strExePath + LP_DETECTOR_BUSSINESS_CONFIG_SOLUTION_DIR; QDir solutionDir(strSolutionDirPath); @@ -149,7 +150,7 @@ bool CDetectorSolutionMgr::Load() } m_nRunSolutionID.clear(); - + /*遍历solution文件夹下的所有文件夹,每一个文件夹即是一个子solution*/ solutionDir.setFilter(QDir::Dirs | QDir::Hidden | QDir::NoSymLinks); solutionDir.setSorting(QDir::Size | QDir::Reversed); QFileInfoList dirList = solutionDir.entryInfoList(); @@ -160,7 +161,8 @@ bool CDetectorSolutionMgr::Load() if (dirList.at(i).fileName() == "." || dirList.at(i).fileName() == "..") continue; - //加载解决方案文件夹 + //加载解决方案文件夹 判断子solution文件里使用包含info.json文件,有该文件表示solution有效,solution名和文件夹名一致 + /*如果需要修改solution的名字,需要手动在后台修改solution的文件夹名字即可*/ QString strSolutionFile = strSolutionDirPath + dirList.at(i).fileName(); QString path = strSolutionFile + "/info.json"; QFileInfo finfo(path); @@ -168,8 +170,8 @@ bool CDetectorSolutionMgr::Load() continue; LP_DETECTOR_SOLUTION solutionInfo; - solutionInfo.strName = dirList.at(i).fileName(); - + solutionInfo.strName = dirList.at(i).fileName();//设置solution名 + /*开始加载solution*/ Solution* pSolution = (Solution*)AddSolution(&solutionInfo); if (!pSolution->LoadFileEx(strSolutionFile)) {//有bug @@ -184,7 +186,7 @@ bool CDetectorSolutionMgr::Load() return true; } - +/*暂时弃用*/ bool CDetectorSolutionMgr::LoadByNames(QStringList strNames) { return true; diff --git a/src/lpbengine/Task.cpp b/src/lpbengine/Task.cpp index 190241d..0f3500b 100644 --- a/src/lpbengine/Task.cpp +++ b/src/lpbengine/Task.cpp @@ -24,6 +24,7 @@ static inline bool DelDiretory(const QString &dirPath) return qDir.rmdir(dirPath); } + CDetectorTask::CDetectorTask() { m_nID = LP_DETECTOR_INVALID_ID; @@ -488,6 +489,23 @@ bool CDetectorTask::RemoveFile() DelDiretory(m_taskPath); return true; } +/*对task重命名*/ +bool CDetectorTask::RenameFile(QString strOldName, QString strNewName) +{ + if (m_taskPath.isEmpty()) + return false; + QDir qDir(m_taskPath); + if (!qDir.exists()) + return false; + QString strOld = m_taskPath; + int pos = strOld.lastIndexOf(strOldName); + QString s = strOld.mid(0, pos); + m_taskPath = s + strNewName; + bool b = qDir.rename(strOld, m_taskPath); + strParamFilePath = m_taskPath + "/taskinfo.json"; + m_tTask.strName = strNewName; + return true; +} bool CDetectorTask::AppendOtherFile(QString strpath) { diff --git a/src/lpbengine/Task.h b/src/lpbengine/Task.h index 181dd17..7a6869f 100644 --- a/src/lpbengine/Task.h +++ b/src/lpbengine/Task.h @@ -57,6 +57,7 @@ public: virtual bool SaveFile(const QString& strPath); virtual bool LoadFile(const QString& strPath); virtual bool RemoveFile(); + virtual bool RenameFile(QString strOldName, QString strNewName); virtual bool AppendOtherFile(QString strpath); bool SerializeToJson(QJsonObject& jsonObject); diff --git a/tpvs17/Enchanter/Enchanter.aps b/tpvs17/Enchanter/Enchanter.aps index 0314a42727f1cc7be398f159ff95f49e29ac29f0..09303914dcc125e0d5559f0317408d46d6082520 100644 GIT binary patch delta 609 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 literal 0 HcmV?d00001 diff --git a/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj b/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj index b86b9eb..dd78163 100644 --- a/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj +++ b/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj @@ -40,6 +40,7 @@ + $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... @@ -77,6 +78,9 @@ + + + {784071A9-BF94-4D27-B62E-588ACD7E0633} Qt4VSv1.0 diff --git a/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj.filters b/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj.filters index 16e291e..ff57e83 100644 --- a/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj.filters +++ b/tpvs17/lpCoreCtrl/lpCoreCtrl.vcxproj.filters @@ -130,6 +130,9 @@ Header Files + + Header Files + @@ -147,4 +150,7 @@ Generated Files + + + \ No newline at end of file diff --git a/tpvs17/lpCoreCtrl/resource.h b/tpvs17/lpCoreCtrl/resource.h new file mode 100644 index 0000000..04447f2 --- /dev/null +++ b/tpvs17/lpCoreCtrl/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by lpCoreCtrl.rc + +// ¶һĬֵ +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/tpvs17/lpbengine/lpbengine.aps b/tpvs17/lpbengine/lpbengine.aps new file mode 100644 index 0000000000000000000000000000000000000000..d32086f8679c429f67c0f15d8f27da9ef415673b GIT binary patch literal 2560 zcmb7GO>Y}j6g>_Gr8E^0MW{=sbdgBJ%%r7-Y`_^$@K9$aopGE*xUv#waEvC7<&T)E zEGl+vSn(xR@C!g<#R7>XLfNoj%c9+M$Cg#ixo>RGj7?oJ*1Wmz-H&(gnRm|^05ZG> zgYc%9xHQhL@h)H&8+;B1si8hSKNL`)WUg2G$G#tw4}vql(ruk}^jnpnb?7(ijiw(- z*>(*N>6nc9n+l~Nin*j#meBS)r@eN~*R#jq&ehzuSGCQ(Qq?s*XU8?nYB^WjF`;WZ zF2wbQv$d78^F#FwO{2k!Ndvp&I>oU+^%vuMZ-2`ixl8l~V3bt9(PUmKqg2_emQB~Q z9J^}Sn+|lmjFgo(s$MBqvJ5P*>MK}9O8Lt8h)9RmCLc*0epiY(4kgxV*+y|E&l;8X z8s9;Db?rY_ua8&79(c@oa<4ZCC!j4xn44Hf1$`XD=Py7R2OQ5RSI|X^QinO*;w<3o zkn2s<(cmZ+ZH^tBqDQGlSx1(U07FIH=ISY}+l+aF3^wT(D31)5@iE@QO{_4=u8Ma= z+diXZaGUckr3&L|94+ovqh}9CYFAm!s#|A-HN4HA%qz4w;n-L4!ra1qpw4j;i`6j} za{>ylIKsp|J|*DsDUsH1GP}ux09;|zBQ zfJFMq#z-g)XR50v^wVuggIL3?DlFJ-tcgg!ZrHcwI!JIHe-;-Pr2#JS?tXZnY4 zI`02kqge}jM}Fq&sKKvZB4yyYXT}l>_EL<$#POV4WVk*UERK0I-f!n~Qehb$svJ$Y zlq@)`w5saeq%7Aj>A#;q-Vx^1IC{RLwBP|rQk9IJ{8b{wlchk0*)( z7U?(Y?7Zskn%cj`JQ|GGRQ}7o&+S)&$6x;N>9-$jIbYxZGkEmbPj`Oy3&-Ezf1xWl z&d1`E8K+GKi2T=v9WR|PoVbolw3oWN%C@O^E6RA1t+M2ffIqq3$7T8!=~q`?Qgw^< z3Tk!o7t>KlB-ezq4DwZm9jWmSnR!Fy;S7BRb>Ytu9x@9NoR!bJ3d4{skH}#)W)M{Z zJRP^Ck9K#ZX9T;X|0IHw_~lt+O0j)=oNaVUgu~LbD6uX%3mw*Uka(Zz`5)6?@OUP< zE;^ATNzRt+HS52`L+Zat*i8R7kniSq+%JkV{oR!B-2yj`Y^J|=8??E?){ShYzXQVI s4-z)h94=gSPKf>wR|!8YJU`1PL@mxK!ZLd^eWrOxIOr4lJdK0?1u1g3OaK4? literal 0 HcmV?d00001 diff --git a/tpvs17/lpbengine/lpbengine.rc b/tpvs17/lpbengine/lpbengine.rc new file mode 100644 index 0000000000000000000000000000000000000000..eb99dac1f9bdd0576da92a16a3d731a0fedd43e0 GIT binary patch literal 4544 zcmd5=yKWOf6ulJ^2s%Ds<1~pNiS4AICAQ;O_?7q(5J6TFKVszAkspF66cG)gp#vm3 zzJP*?j$fdlrJ>;yXds+3L9XYRdo@41he_4)4=SrJPz(v$<~N=JHl z>e9zt8FM`u$ey(D7L!|OmNcX$Z9HAf_t94|*F{gh0Y(QHTX>_irW}K2S#HQR?6RWz zdCa!4+5&Y|(S}_75%3&JNYRsbUQyN+C#Bz&ycDD;C5cN)a#E3PNnkdPaaPju05b*r zW@H^RX^f2q)FODzXlHs$l0aq>LO`JDI%4>6;Wj*bDaVl35R_iV9YkT-IJ)f??BS<1esEy&qvA$R?JDf_Fu=;7&} zEpM6%lQ~EJRAm7uZ6I=V-V~4{C1g+xu~R_=rO_z&8JgwGS%i#j#AyY5o5-+5wQCx) zSxw_t(@&$-88w=ApLtbh>;6M_bP_?tJf2C!?wvKo+VL)XqkHhN1lS>co#mOIKCTC|UmGq1-yUe(F0n!XG_ z@@7K}LeQHxpkv%U+j4^V+QVB7^E^#La@6?tXmR^<@5{;A{?$hQO>66C!Fz9S=>~x~ zWZG}AIvdO`3xikLo2?(OKRkc;Fq32>;k8S&Xdn@0CE_!~+(eR2$MFpe6ynf6EiaIaXn zd&Jc3A`080IKigbGdJ9WI@2!WFTUC1;D6Yc$6g)aGQhV=--V#R|K}d>>`Y^mbD!BG zVSHwrm~hWHv$PD"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DLPBENGINE_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I.\..\..\include" "-I.\..\..\..\Colossus\include\base" "-I.\..\..\..\Colossus\include\lpbengine" "-I.\..\..\3part\opencv3.4.1\include" "-I.\..\..\3part\opencv3.4.1\include\opencv" "-I.\..\..\3part\opencv3.4.1\include\opencv2" "-I.\..\..\3part\tadpole\include\tpBase" "-ID:\Valve\3part\tadpole\include\tpBase" + + + + + + diff --git a/tpvs17/lpbengine/lpbengine.vcxproj.filters b/tpvs17/lpbengine/lpbengine.vcxproj.filters index 9078714..a4d8c38 100644 --- a/tpvs17/lpbengine/lpbengine.vcxproj.filters +++ b/tpvs17/lpbengine/lpbengine.vcxproj.filters @@ -88,4 +88,12 @@ Header Files + + + Header Files + + + + + \ No newline at end of file diff --git a/tpvs17/lpbengine/resource1.h b/tpvs17/lpbengine/resource1.h new file mode 100644 index 0000000..071111d --- /dev/null +++ b/tpvs17/lpbengine/resource1.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by lpbengine.rc + +// ¶һĬֵ +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/tpvs17/lpdesigner/QSetCenterDlg.cpp b/tpvs17/lpdesigner/QSetCenterDlg.cpp new file mode 100644 index 0000000..5b73d29 --- /dev/null +++ b/tpvs17/lpdesigner/QSetCenterDlg.cpp @@ -0,0 +1,55 @@ +#include "QSetCenterDlg.h" +#include "QMessageBox" +#pragma execution_character_set("utf-8") +QSetCenterDlg::QSetCenterDlg(QWidget *parent) + : QDialog(parent) +{ + ui.setupUi(this); + setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + +} + +QSetCenterDlg::~QSetCenterDlg() +{ + +} + +void QSetCenterDlg::setCenter(double x, double y) +{ + ui.lineEdit->setText(QString("%1").arg(x)); + ui.lineEdit_2->setText(QString("%1").arg(y)); +} + +void QSetCenterDlg::getCenter(double &x, double &y) +{ + x = ui.lineEdit->text().toDouble(); + y = ui.lineEdit_2->text().toDouble(); +} + +void QSetCenterDlg::setRange(QRect rect, QPointF imgSize) +{ + m_ItemRect = rect; + m_ImgSize = imgSize; +} + +Q_SLOT void QSetCenterDlg::onButtonClicked() +{ + QString strObj = sender()->objectName(); + if (strObj == "pushButton") + { + double x = ui.lineEdit->text().toDouble(); + double y = ui.lineEdit_2->text().toDouble(); + if ((x + m_ItemRect.width() / 2) > m_ImgSize.x() || (x - m_ItemRect.width() / 2) < 0 || (y - m_ItemRect.height() / 2) < 0 || (y + m_ItemRect.height() / 2) > m_ImgSize.y()) + { + QMessageBox::warning(this, QObject::tr(""), QObject::tr("õԲ굼ROIⷶΧϷã")); + return; + } + QDialog::accept(); + } + else if (strObj == "pushButton_2") + { + QDialog::reject(); + } +} diff --git a/tpvs17/lpdesigner/QSetCenterDlg.h b/tpvs17/lpdesigner/QSetCenterDlg.h new file mode 100644 index 0000000..4467018 --- /dev/null +++ b/tpvs17/lpdesigner/QSetCenterDlg.h @@ -0,0 +1,24 @@ +#ifndef _QSETCENTERDLG_H_ +#define _QSETCENTERDLG_H_ + +#include +#include "ui_QSetCenterDlg.h" + +class QSetCenterDlg : public QDialog +{ + Q_OBJECT + +public: + QSetCenterDlg(QWidget *parent = Q_NULLPTR); + ~QSetCenterDlg(); + void setCenter(double x, double y); + void getCenter(double &x, double &y); + void setRange(QRect rect, QPointF imgSize); + Q_SLOT void onButtonClicked(); +private: + Ui::QSetCenterDlg ui; + QRect m_ItemRect; + QPointF m_ImgSize; +}; + +#endif diff --git a/tpvs17/lpdesigner/QSetCenterDlg.ui b/tpvs17/lpdesigner/QSetCenterDlg.ui new file mode 100644 index 0000000..36eac37 --- /dev/null +++ b/tpvs17/lpdesigner/QSetCenterDlg.ui @@ -0,0 +1,76 @@ + + + QSetCenterDlg + + + + 0 + 0 + 209 + 100 + + + + + 12 + + + + 圆心坐标设置 + + + + QLayout::SetFixedSize + + + + + 圆心X坐标 + + + + + + + 0 + + + + + + + 圆心Y坐标 + + + + + + + 0 + + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + + diff --git a/tpvs17/lpdesigner/lpdesigner.aps b/tpvs17/lpdesigner/lpdesigner.aps deleted file mode 100644 index cd42dd2c52edde0a099831f39513d2c6e509f3af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324 zcmb7D&2G~`5dI7~gue?1&S~kPm1q=`3ZWj5g6#;4#ExPoEs`ZGN~|=MYe#m{@E|-4 zj{rOamx`A_T*9|@oJ|O{Vy)Soo%!a+voiotAuX3Vk=uhb{C8UYL~9cZ@YcJ0>Mo_f|+>YWd5qc9iVAIqGIDnNnKcl^H5bxhmxO{-}` z#ZxGzuKAAJa7_(|$LbM|p=AFf_8)AX)%wMAyAEG7ji`N5hvjOO%1xZY<4Xq^V9Gr~ zhZN(I{17whG~Pl|%5P5cD4pV(oQgVcA#Wq1Q%o>Ml=<-JLr7v;B=i%Y3bqM*H(#Z) zmc`9ujfolH3KcZzBg`x-IK)T1#w#2##u?=iqr_OyYX$FlpON#3s4@?a9UC!D$ao?b zkLMNlMP`@hl4rm<*{RRBo%* + $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... @@ -93,6 +94,7 @@ + $(QTDIR)\bin\moc.exe;%(FullPath) @@ -104,6 +106,16 @@ .\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DLPDESIGNER_LIB -D%(PreprocessorDefinitions) "-I." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWebKit" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtWebkitWidgets" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\..\..\include\lpdesigner\algela" "-I.\..\..\include\lpdesigner" "-I.\..\..\src\lpbdesigner\GeneratedFiles" "-I.\..\..\src\ColossusBase" "-I.\..\..\3part\opencv3.4.1\include" "-I.\..\..\3part\opencv3.4.1\include\opencv" "-I.\..\..\3part\opencv3.4.1\include\opencv2" "-I.\..\..\src\lpbdesigner" "-I.\..\..\3part\tadpole\include\tpBase" + + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing %(Identity)... + .\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DLPDESIGNER_LIB -D%(PreprocessorDefinitions) "-I." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWebKit" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtWebkitWidgets" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\..\..\include\lpdesigner\algela" "-I.\..\..\include\lpdesigner" "-I.\..\..\src\lpbdesigner\GeneratedFiles" "-I.\..\..\src\ColossusBase" "-I.\..\..\3part\opencv3.4.1\include" "-I.\..\..\3part\opencv3.4.1\include\opencv" "-I.\..\..\3part\opencv3.4.1\include\opencv2" "-I.\..\..\src\lpbdesigner" "-I.\..\..\3part\tadpole\include\tpBase" + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing %(Identity)... + .\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DLPDESIGNER_LIB -D%(PreprocessorDefinitions) "-I." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWebKit" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtWebkitWidgets" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\..\..\include\lpdesigner\algela" "-I.\..\..\include\lpdesigner" "-I.\..\..\src\lpbdesigner\GeneratedFiles" "-I.\..\..\src\ColossusBase" "-I.\..\..\3part\opencv3.4.1\include" "-I.\..\..\3part\opencv3.4.1\include\opencv" "-I.\..\..\3part\opencv3.4.1\include\opencv2" "-I.\..\..\src\lpbdesigner" "-I.\..\..\3part\tadpole\include\tpBase" + @@ -200,6 +212,9 @@ true + + true + true @@ -230,6 +245,9 @@ true + + true + true @@ -242,6 +260,7 @@ + @@ -313,6 +332,19 @@ "$(QTDIR)\bin\uic.exe" -o ".\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + + + + diff --git a/tpvs17/lpdesigner/lpdesigner.vcxproj.filters b/tpvs17/lpdesigner/lpdesigner.vcxproj.filters index a3fd515..8e49285 100644 --- a/tpvs17/lpdesigner/lpdesigner.vcxproj.filters +++ b/tpvs17/lpdesigner/lpdesigner.vcxproj.filters @@ -76,6 +76,12 @@ Header Files + + Generated Files + + + Header Files + @@ -123,6 +129,12 @@ Header Files + + Header Files + + + Form Files + @@ -224,6 +236,15 @@ Source Files + + Generated Files\Debug + + + Generated Files\Release + + + Source Files + @@ -235,4 +256,7 @@ Translation Files + + + \ No newline at end of file diff --git a/tpvs17/lpdesigner/lpdesigner1.aps b/tpvs17/lpdesigner/lpdesigner1.aps new file mode 100644 index 0000000000000000000000000000000000000000..405afca010a11ca0cb102fd62831b86faa163369 GIT binary patch literal 2576 zcmb7GO>7%Q7<~>#N@*)1S^-C=^pFU}tkaM}FUVPM$WnVZ-F2Kq7@5>r9HWh6`6nUb z074u&>vpM>w+ch`il))vvABU%cI@KVpZfDry}Mg7M(z^*0x;UtNwdX$sU4*% zZmnWCu4!8}(^|KY!xKoE1-<5$^JP=V!cuM#OGqhS>F*Nl;92J@j>E4?5yhd*TunRlL<233I+S*lKrd4%UFP};%-uUMC%Tt9wLKv`ufTvg9W^W z7qE&&M%kvk#pp-eNtbpvIqz{)<=Ps1liE5x`)UV)G)qmE`ciw*oZNo zXw99?NQM=-sIfQTaAd+}rZtuCI>++-nEv};$QfZq_41bICDnr$Bt4W21$?d0B*l0= z)|}K-V_b7mLvOIcfH`HO@h)h@TH0;);FUQ~U!69Gto1$GpK?!9xt?0!u<^%hi_TBo z-%j7XeXgXIMZZyP7gT-M)%tDjqse$J<^RRozx#JT{QlMt-o`=clh!-) zZ*Fg27%cQZwl4ekKKu5)uU;+LKY#SBbNc09$Ks%2HWIhOxE;klqj(M4D6Bg6SU>R1Z#ul*k zn%ajw^p#T(P95PRvjEX)`w7k>;Lm-sTAe!xGXWlirR1@qFpK+5A{WI?&b`2vQq12O z?=rkC!ewb%l$np*i7s>5i=AtF_Pg|_yryx^3+^f%$9Gh|PqNmu{}y+s|2k%q{GTA- z&~Lb27$^A+m2aQi^Ux;w?OUTwh9w-@B)*P VTZC<1pX!t3BjKX=>GNM)bRSxRyR85K literal 0 HcmV?d00001 diff --git a/tpvs17/lpdesigner/lpdesigner1.rc b/tpvs17/lpdesigner/lpdesigner1.rc new file mode 100644 index 0000000000000000000000000000000000000000..dc0ff9f5ee2e2d0829c02d84f8a24bd5e2524b3b GIT binary patch literal 4548 zcmd5=Id2m|6n-rzbo_vg(08x;LXb?g|qTmpJ zf`W>Uik^a&hK7oo2EzBvczBHsRO*|!O z0hR}>DQ(%6D&8V8i(yGwic-VV0KA3y0I&vT(zUVL$J)XhxmDyCI16$`F5{F%HBSLr z!)_JW2MRafq7Q@SPyz~{v{MSRq$tV#x}+r|S;@(UsJ*^(%rt5_!`F1G;5;5Q*F zfW)yj5>Sfq8%8=aTe1$z^joFr4sZWEjEnh4d3yajdYgGC!Z9jsmIc)DrJ zn~Ji@q$7V0WExglL*(eZ$sk8^$e;*fr+^5GW03Dd49k}?3m#jD(*o!=kYO|G)Ht9? zKy#SaRV*5a#$%*LfgP1O@Xi2l1*d76ehlVt3^|+zMhx=CK(*SZo4?n2QXZP!=u(ZB zPwmne|C-q^v&}wdJ|Wo9uLf{`1-h@R>cBUvGyLl9js!b3HwxSJEX`^%$|+uzJ|ONY z6ObKLs~zO9uJ}DU{Ull%QKDhbnNn5w0Cka-MGyMTtID|J&3MV~>G4`qLP}(2-ub-Q zo6xupe;ByYB#(?N04IvfXKwPgEvWcf!b;p7^WYf2kxw1<^5uX{9J)yeFdIS)Uw zv!M+FkeeOQF?!FMoFKk-@m2(!w@E;b%3tryY<+BgJ~`XFR8GIDZvM=8pY6@vSYQ=A z?H#Pn26M{m(=XL;Pv38TC~h1kUeq2<-re4wIG=7mPhPElfBEk5+uMoMr)RTUCvSe- z8|8Fo4w_Th69+p_$j74ITG5~E)Ek)D%lBKY3VZS%W!9I0vw*iM#xSzSL0?wf>7irz zhEY{UpW5nr$Gu~r6N#u^BMjZbxX*?;Gu1hR(M!FI_xNUyivOWs8fVpEmo~m!S}qHE zMZ_?gIJsZ!f4_|C-PfPUc=6Byw=o=5}Em5zirw34gR(@ bwj3`z*rlO_{xMxcrQ!cC?k`!l-^u9@U|}`* literal 0 HcmV?d00001 diff --git a/tpvs17/lpdesigner/resource2.h b/tpvs17/lpdesigner/resource2.h new file mode 100644 index 0000000..b691ddb --- /dev/null +++ b/tpvs17/lpdesigner/resource2.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by lpdesigner1.rc + +// ¶һĬֵ +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/tpvs17/tpMain/QAlgParamDlg.cpp b/tpvs17/tpMain/QAlgParamDlg.cpp index ca9cc30..d2a268c 100644 --- a/tpvs17/tpMain/QAlgParamDlg.cpp +++ b/tpvs17/tpMain/QAlgParamDlg.cpp @@ -127,9 +127,12 @@ Q_SLOT void QAlgParamDlg::onChangeBG() createfile->remove(DstPath); //} } - if (!QFile::copy(sourcePath, DstPath)) { + QImage img;// (sourcePath); + img.load(sourcePath); + img.save(DstPath); + //if (!QFile::copy(sourcePath, DstPath)) { //return false; - } + //} //emit sgChangeBG(DstPath); QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("背景图更新完成,请重启本软件."), QMessageBox::Yes, NULL); infobox.setWindowIcon(QIcon(":/image/leaper")); diff --git a/tpvs17/tpMain/QModelMgrDlg.cpp b/tpvs17/tpMain/QModelMgrDlg.cpp index a5b8688..f8fd7af 100644 --- a/tpvs17/tpMain/QModelMgrDlg.cpp +++ b/tpvs17/tpMain/QModelMgrDlg.cpp @@ -459,6 +459,8 @@ Q_SLOT void QModelMgrDlg::onChangeModelName() emit(m_pCtrl->sgModelChanged()); onShowModelInfo(m_newName); onShowModelPic(m_newName); + + emit sgModeModeName(strModel, m_newName); } Q_SLOT void QModelMgrDlg::onProgassCancel() diff --git a/tpvs17/tpMain/QPLCDevice.cpp b/tpvs17/tpMain/QPLCDevice.cpp index bad8d79..0e787eb 100644 --- a/tpvs17/tpMain/QPLCDevice.cpp +++ b/tpvs17/tpMain/QPLCDevice.cpp @@ -117,6 +117,7 @@ void QPLCDevice::onParaster(QByteArray recvData) else if (cmd.toInt() == 2) //Ӧ { onSendHeartBit(); + emit sgRecvHeartBit(); } else if (cmd.toInt() == 3) { diff --git a/tpvs17/tpMain/QPLCDevice.h b/tpvs17/tpMain/QPLCDevice.h index 7310a5f..940ea52 100644 --- a/tpvs17/tpMain/QPLCDevice.h +++ b/tpvs17/tpMain/QPLCDevice.h @@ -36,6 +36,7 @@ signals: void sgTrigerCam(int camID); void sgSendDataCallBack(QByteArray); void sgRecvDataCallBack(QByteArray); + void sgRecvHeartBit(); private: lptkRawTcpServer *m_rawTcpServer{ nullptr }; QMutex mMtLock; diff --git a/tpvs17/tpMain/lpMainWin.cpp b/tpvs17/tpMain/lpMainWin.cpp index bb159c8..7f53780 100644 --- a/tpvs17/tpMain/lpMainWin.cpp +++ b/tpvs17/tpMain/lpMainWin.cpp @@ -22,9 +22,9 @@ #include "databasesql.h" #include "lpCryptokey.h" -#define VERSION_HUB "3.0.1.9" +#define VERSION_HUB "3.0.3.0" #define VERSION_ALG "3.0.1.4" -#define UPDATE_TIME "2021-11-10" +#define UPDATE_TIME "2021-12-03" #pragma execution_character_set("utf-8") #define MODEL_UI_ICON_NONE ":/image/no-img" @@ -206,6 +206,7 @@ lpMainWin::lpMainWin(QWidget *parent) connect(m_pModelMgrDlg, SIGNAL(sgUpdatedefect()), this, SLOT(onUpdateDefect()));//更新检测列表 connect(m_pModelMgrDlg, SIGNAL(sgAddNewModel(QString)), this, SLOT(onSlotAddNewModel(QString)));//新建模板型号 connect(m_pModelMgrDlg, SIGNAL(sgDelOldModel(QString)), this, SLOT(onSlotDelOldModel(QString)));//删除模板型号 + connect(m_pModelMgrDlg, SIGNAL(sgModeModeName(QString,QString)), this, SLOT(onSlotModModel(QString,QString)));//删除模板型号 m_pDebugDlg = new QDebugDlg();//调试界面 m_pDebugDlg->onSetCtrl(m_pCtrl); @@ -1661,6 +1662,20 @@ Q_SLOT void lpMainWin::onSlotDelOldModel(QString strName) } } } + +Q_SLOT void lpMainWin::onSlotModModel(QString strOldName, QString strNewName) +{ + if (m_pEngineCtrl) { + IDetectorSolutionMgr* pMgr = m_pEngineCtrl->getSolutionMgr(); + if (pMgr) { + IDetectorSolution* pSolution = pMgr->GetRunSolution(); + if (pSolution) { + pSolution->ModifyTask(strOldName, strNewName); + pSolution->SaveTaskByName(""); + } + } + } +} /* 保存定位检测结果数据 (1)把定位检测的对于图片保存起来,供后期核查 diff --git a/tpvs17/tpMain/lpMainWin.h b/tpvs17/tpMain/lpMainWin.h index bce312c..414f04c 100644 --- a/tpvs17/tpMain/lpMainWin.h +++ b/tpvs17/tpMain/lpMainWin.h @@ -83,6 +83,7 @@ private: Result2Ui *parseMap(const QVariantMap &vMap); Q_SLOT void onSlotAddNewModel(QString strName); Q_SLOT void onSlotDelOldModel(QString strName); + Q_SLOT void onSlotModModel(QString strOldName, QString strNewName); void onSaveValveResult(ValueResult &rlt); protected: bool onInitCoreCtrl();//核心模块ctrol初始化 diff --git a/tpvs17/valueMainUI/dumpfile.h b/tpvs17/valueMainUI/dumpfile.h new file mode 100644 index 0000000..b90ac22 --- /dev/null +++ b/tpvs17/valueMainUI/dumpfile.h @@ -0,0 +1,129 @@ +#ifndef _H_DUMPFILE_H_ +#define _H_DUMPFILE_H_ + +/*! + *FileName: dumpfile.h + *Author: Pan Yingdong + *Email: bob.pan@hzleaper.com + *Created:2020/5/19 16:02 + *Note: +*/ +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace std::chrono; + +#pragma comment(lib, "Dbghelp.lib") + +namespace NSDumpFile +{ + void CreateDumpFile(LPCWSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException) + { + // 创建Dump文件 + // + HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + + + // Dump信息 + // + MINIDUMP_EXCEPTION_INFORMATION dumpInfo; + dumpInfo.ExceptionPointers = pException; + dumpInfo.ThreadId = GetCurrentThreadId(); + dumpInfo.ClientPointers = TRUE; + + + // 写入Dump文件内容 + // + MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL); + + + CloseHandle(hDumpFile); + } + + + LPTOP_LEVEL_EXCEPTION_FILTER WINAPI MyDummySetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter) + { + return NULL; + } + + + BOOL PreventSetUnhandledExceptionFilter() + { + HMODULE hKernel32 = LoadLibrary(_T("kernel32.dll")); + if (hKernel32 == NULL) + return FALSE; + + + void *pOrgEntry = GetProcAddress(hKernel32, "SetUnhandledExceptionFilter"); + if (pOrgEntry == NULL) + return FALSE; + + + unsigned char newJump[100]; + DWORD dwOrgEntryAddr = (DWORD)pOrgEntry; + dwOrgEntryAddr += 5; // add 5 for 5 op-codes for jmp far + + + void *pNewFunc = &MyDummySetUnhandledExceptionFilter; + DWORD dwNewEntryAddr = (DWORD)pNewFunc; + DWORD dwRelativeAddr = dwNewEntryAddr - dwOrgEntryAddr; + + + newJump[0] = 0xE9; // JMP absolute + memcpy(&newJump[1], &dwRelativeAddr, sizeof(pNewFunc)); + SIZE_T bytesWritten; + BOOL bRet = WriteProcessMemory(GetCurrentProcess(), pOrgEntry, newJump, sizeof(pNewFunc) + 1, &bytesWritten); + return bRet; + } + + LONG WINAPI UnhandledExceptionFilterEx(struct _EXCEPTION_POINTERS *pException) + { + TCHAR szMbsFile[MAX_PATH] = { 0 }; + ::GetModuleFileName(NULL, szMbsFile, MAX_PATH); + TCHAR* pFind = _tcsrchr(szMbsFile, '\\'); + if (pFind) + { + *(pFind + 1) = 0; + + char buffer[80]; + time_t rawtime; + struct tm info; + time(&rawtime); + localtime_s(&info, &rawtime); + TCHAR szMbsFile[MAX_PATH] = { 0 }; + strftime(buffer, 80, "%Y-%m-%d %H-%M-%S", &info); + std::string strName = buffer; + strName += ".dmp"; + _stprintf_s(szMbsFile, MAX_PATH, _T("%S"), strName.c_str()); + CreateDumpFile(szMbsFile, pException); + } + + + // TODO: MiniDumpWriteDump + FatalAppExit(-1, _T("Fatal Error")); + return EXCEPTION_CONTINUE_SEARCH; + } + + + void RunCrashHandler() + { + SetUnhandledExceptionFilter(UnhandledExceptionFilterEx); + PreventSetUnhandledExceptionFilter(); + } +}; + + +#define DeclareDumpFile() NSDumpFile::RunCrashHandler(); +/* +使用方法 +在main文件中添加头文件 +main函数中调用DeclareDumpFile()即可 +*/ +#endif \ No newline at end of file diff --git a/tpvs17/valueMainUI/main.cpp b/tpvs17/valueMainUI/main.cpp index 16d7e36..70a8490 100644 --- a/tpvs17/valueMainUI/main.cpp +++ b/tpvs17/valueMainUI/main.cpp @@ -1,8 +1,10 @@ #include "valueMainUI.h" #include #include "QSignleApplication.h" +#include "dumpfile.h" int main(int argc, char *argv[]) { + DeclareDumpFile(); SingleApplication a(argc, argv,"valueMain"); if (!a.getInstanceRunning()) { diff --git a/tpvs17/valueMainUI/valueMainUI.cpp b/tpvs17/valueMainUI/valueMainUI.cpp index e2dfc25..89737d6 100644 --- a/tpvs17/valueMainUI/valueMainUI.cpp +++ b/tpvs17/valueMainUI/valueMainUI.cpp @@ -29,7 +29,7 @@ valueMainUI::valueMainUI(QWidget *parent) setupTrayIcon();//后台任务栏初始化 setWindowIcon(QIcon(WINDOWICON)); - setWindowTitle(tr("识别定位一体检测系统(v1.0.5 21.11.11)")); + setWindowTitle(tr("识别定位一体检测系统(v1.0.7 21.11.19)")); lpGlobalData::instance(); lpConfig::instance()->loadConfig(); @@ -127,6 +127,8 @@ valueMainUI::valueMainUI(QWidget *parent) connect(m_pPlcDevice, SIGNAL(sgSendAlgResult(int)), this, SLOT(onSendAlgResult(int))); connect(m_pPlcDevice, SIGNAL(sgSendDataCallBack(QByteArray)), this, SLOT(onShowSendTcpData(QByteArray))); connect(m_pPlcDevice, SIGNAL(sgRecvDataCallBack(QByteArray)), this, SLOT(onShowRecvTcpData(QByteArray))); + connect(m_pPlcDevice, SIGNAL(sgRecvHeartBit()), this, SLOT(onReacvHeartBit())); + } { @@ -628,13 +630,22 @@ void valueMainUI::timerEvent(QTimerEvent *event) bool bConnect = m_pPlcDevice->getClinetInfo(clientInfo); if (bConnect == true) { - QString plc = QString(tr("PLC客户端 %1").arg(clientInfo)); - m_pLabelPLC->setText(plc); - m_pLabelPLC->setStyleSheet("background-color: rgb(63, 170, 24);"); + m_heartTimeout++; + if (m_heartTimeout > 10) + { + QString plc = QString(tr("PLC 心跳超时 %1 ").arg(clientInfo)); + m_pLabelPLC->setText(plc); + m_pLabelPLC->setStyleSheet("background-color: rgb(200, 170, 24);"); + } + else { + QString plc = QString(tr("PLC客户端 %1").arg(clientInfo)); + m_pLabelPLC->setText(plc); + m_pLabelPLC->setStyleSheet("background-color: rgb(63, 170, 24);"); + } } else { m_pLabelPLC->setText(tr("PLC客户端未连接")); - m_pLabelPLC->setStyleSheet("background-color: rgb(200, 200, 10);"); + m_pLabelPLC->setStyleSheet("background-color: rgb(200, 10, 10);"); } } QString m_currentTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); @@ -1161,4 +1172,10 @@ Q_SLOT void valueMainUI::onSendAlgResult(int camID) m_pPlcDevice->onSendValueRlt(lpGlobalData::instance()->m_StationResult_2); } } -} \ No newline at end of file +} + +Q_SLOT void valueMainUI::onReacvHeartBit() +{ + m_heartTimeout = 0; +} + diff --git a/tpvs17/valueMainUI/valueMainUI.h b/tpvs17/valueMainUI/valueMainUI.h index 78b0409..575aeb6 100644 --- a/tpvs17/valueMainUI/valueMainUI.h +++ b/tpvs17/valueMainUI/valueMainUI.h @@ -74,6 +74,7 @@ private://trayIcon void SetTranslator(const QString strPath); Q_SLOT void onLanguageChange(QString strLanguage); Q_SLOT void onSendAlgResult(int camID); + Q_SLOT void onReacvHeartBit(); protected: virtual void timerEvent(QTimerEvent *event); virtual void closeEvent(QCloseEvent *event); @@ -105,7 +106,7 @@ private: bool m_bRunStateB{ false }; int m_SysTimerID{ 0 }; quint64 m_tickCount{ 0 }; - + int m_heartTimeout{ 0 }; QStringList m_appNames;//ӻapp lpTcpClient* tcp_client_ptr_A{ nullptr }; diff --git a/tpvs17/valueMainUI/valueMainUI.vcxproj b/tpvs17/valueMainUI/valueMainUI.vcxproj index e045b9c..48d7848 100644 --- a/tpvs17/valueMainUI/valueMainUI.vcxproj +++ b/tpvs17/valueMainUI/valueMainUI.vcxproj @@ -164,6 +164,7 @@ .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;.\..\..\src\tpMain\algela;.\..\..\3part\tadpole\include\tpBase;.\..\..\3part\lp_libtcp\include;.\..\..\src\tpMain .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase;$(QTDIR)\include\QtLocation;$(QTDIR)\include\QtNetwork;E:\wheelValve\3part\lp_libtcp\include;E:\wheelValve\src\tpMain + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;.\..\..\src\tpMain\algela;E:\wheelValve\3part\tadpole\include\tpBase .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets diff --git a/tpvs17/valueMainUI/valueMainUI.vcxproj.filters b/tpvs17/valueMainUI/valueMainUI.vcxproj.filters index 9ece126..00954d6 100644 --- a/tpvs17/valueMainUI/valueMainUI.vcxproj.filters +++ b/tpvs17/valueMainUI/valueMainUI.vcxproj.filters @@ -187,6 +187,9 @@ Header Files + + Header Files + diff --git a/tpvs17/valveDetector/algEg.cpp b/tpvs17/valveDetector/algEg.cpp index 18ff434..7fb678d 100644 --- a/tpvs17/valveDetector/algEg.cpp +++ b/tpvs17/valveDetector/algEg.cpp @@ -91,6 +91,7 @@ bool algEg::Exec(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm) // add original center paramInput.originalPoint = Point2f(pt.x(), pt.y()); paramInput.nCenterAlg = lpAlgorithm->GetParamValue("centerAlg", LP_INT).toInt(); + double centeroffset = lpAlgorithm->GetParamValue("centerOffset", LP_INT).toInt(); // add background paramInput.backGround = lpAlgorithm->GetParamValue("background", LP_MAT).value(); luffy_imageProc::createImage(paramInput.backGround, paramInput.backGround, luffy_imageProc::emCreateGray); @@ -109,7 +110,7 @@ bool algEg::Exec(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm) else { float dis = luffy_math::disofPoints(paramInput.originalPoint, paramInput.ptCenter); - if (dis > 25) + if (dis > centeroffset) { bExist = false; paramOutput.nErrorType += 8; @@ -216,7 +217,9 @@ bool algEg::Exec(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm) bool algEg::Init(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm) { - + LP_ALGORITHM_PARAM param1_centeroffset("centerOffset", LP_INT, 25, QObject::tr("圆心偏差距离,单位像素")); + lpAlgorithm->AddParam(¶m1_centeroffset, 1); + LP_ALGORITHM_PARAM param1_1("backgroundThresh", LP_INT, 15, QObject::tr("背景差异性阈值")); lpAlgorithm->AddParam(¶m1_1, 1);