1、增加型号名修改,同步修改模板识别型号名和气门芯定位型号名

2、气门芯定位标定页面调整,修改参数增加自动刷新功能
3、气门芯定位检测算法增加圆心偏移参数阈值设置功能,开放到调参页面
4、增加ROI圆心坐标设置功能
master
bob.pan 4 years ago
parent 7e5d572e21
commit b450f4e040

@ -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()));
}

@ -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();

@ -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;
}

@ -230,27 +230,17 @@
<property name="spacing">
<number>0</number>
</property>
<item row="3" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
<item row="1" column="1">
<widget class="QToolButton" name="toolButton">
<property name="enabled">
<bool>false</bool>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="m_pbUp">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="image.qrc">
<normaloff>:/resource/caret-up.png</normaloff>:/resource/caret-up.png</iconset>
<normaloff>:/resource/btn-close.png</normaloff>:/resource/btn-close.png</iconset>
</property>
<property name="iconSize">
<size>
@ -258,11 +248,39 @@
<height>32</height>
</size>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<property name="autoRepeat">
<bool>false</bool>
</property>
<property name="autoExclusive">
<bool>false</bool>
</property>
<property name="popupMode">
<enum>QToolButton::DelayedPopup</enum>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
<property name="arrowType">
<enum>Qt::NoArrow</enum>
</property>
</widget>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QToolButton" name="m_pbDown">
<property name="text">
@ -323,17 +341,14 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="toolButton">
<property name="enabled">
<bool>false</bool>
</property>
<item row="0" column="1">
<widget class="QToolButton" name="m_pbUp">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="image.qrc">
<normaloff>:/resource/btn-close.png</normaloff>:/resource/btn-close.png</iconset>
<normaloff>:/resource/caret-up.png</normaloff>:/resource/caret-up.png</iconset>
</property>
<property name="iconSize">
<size>
@ -341,24 +356,9 @@
<height>32</height>
</size>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<property name="autoRepeat">
<bool>false</bool>
</property>
<property name="autoExclusive">
<bool>false</bool>
</property>
<property name="popupMode">
<enum>QToolButton::DelayedPopup</enum>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
<property name="arrowType">
<enum>Qt::NoArrow</enum>
</property>
</widget>
</item>
</layout>
@ -368,6 +368,18 @@
</item>
<item row="1" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">

@ -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<GraphicsItem*>(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();

@ -67,7 +67,6 @@ public:
void updateTenItem(bool bFlag);
int flag{ 0 };
bool bUseTenFlag{ false };
signals:
void sgResetItem(QPoint pos, QRect size);
protected:

@ -141,6 +141,19 @@ bool Solution::DeleteTask(QString strName)
return false;
}
bool Solution::ModifyTask(QString strOldName, QString strNewName)
{
QMap<QString, IDetectorTask*>::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<QString, IDetectorTask*>::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

@ -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<QString, IDetectorTask*> GetAllTasks();

@ -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;

@ -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)
{

@ -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);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -40,6 +40,7 @@
<ItemGroup>
<ClInclude Include="..\..\src\lpCoreCtrl\callbackFunc.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\CoreCtrl.h" />
<ClInclude Include="resource.h" />
<CustomBuild Include="QFunctionTransfer.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
@ -77,6 +78,9 @@
<None Include="GeneratedFiles\Debug\CoreCtrl.moc" />
<None Include="GeneratedFiles\Release\CoreCtrl.moc" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="lpCoreCtrl.rc" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{784071A9-BF94-4D27-B62E-588ACD7E0633}</ProjectGuid>
<Keyword>Qt4VSv1.0</Keyword>

@ -130,6 +130,9 @@
<ClInclude Include="..\..\src\lpCoreCtrl\threadsafe_list.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\src\lpCoreCtrl\CThread.h">
@ -147,4 +150,7 @@
<Filter>Generated Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="lpCoreCtrl.rc" />
</ItemGroup>
</Project>

@ -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

Binary file not shown.

Binary file not shown.

@ -419,6 +419,12 @@
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(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"</Command>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource1.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="lpbengine.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>

@ -88,4 +88,12 @@
<Filter>Header Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource1.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="lpbengine.rc" />
</ItemGroup>
</Project>

@ -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

@ -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();
}
}

@ -0,0 +1,24 @@
#ifndef _QSETCENTERDLG_H_
#define _QSETCENTERDLG_H_
#include <QDialog>
#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

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QSetCenterDlg</class>
<widget class="QDialog" name="QSetCenterDlg">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>209</width>
<height>100</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="windowTitle">
<string>圆心坐标设置</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>圆心X坐标</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>圆心Y坐标</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_2">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>确定</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>取消</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

Binary file not shown.

@ -78,6 +78,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="resource2.h" />
<CustomBuild Include="..\..\src\lpbdesigner\DsgParamDlg.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
@ -93,6 +94,7 @@
<ClInclude Include="..\..\src\lpbdesigner\GeneratedFiles\ui_AlgorithmParamMgrDlg.h" />
<ClInclude Include="..\..\src\lpbdesigner\GeneratedFiles\ui_MainFrame.h" />
<ClInclude Include="..\..\src\lpbdesigner\GeneratedFiles\ui_ParamDlg.h" />
<ClInclude Include="..\..\src\lpbdesigner\GeneratedFiles\ui_QSetCenterDlg.h" />
<ClInclude Include="..\..\src\lpbdesigner\GeneratedFiles\ui_RoiDlg.h" />
<CustomBuild Include="lpdesignerConfig.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@ -104,6 +106,16 @@
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(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"</Command>
</CustomBuild>
<CustomBuild Include="QSetCenterDlg.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(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"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\..\..\src\lpbdesigner\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(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"</Command>
</CustomBuild>
<ClInclude Include="resource1.h" />
<CustomBuild Include="..\..\src\lpbdesigner\algela\lpImgViewer.h" />
<ClInclude Include="..\..\src\lpbdesigner\DrawTool.h" />
@ -200,6 +212,9 @@
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Debug\moc_MainFrame.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Debug\moc_QSetCenterDlg.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Debug\moc_RoiScene.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
@ -230,6 +245,9 @@
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Release\moc_MainFrame.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Release\moc_QSetCenterDlg.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Release\moc_RoiScene.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</ClCompile>
@ -242,6 +260,7 @@
<ClCompile Include="..\..\src\lpbdesigner\SystemStateInfo.cpp" />
<ClCompile Include="lpdesignerConfig.cpp" />
<ClCompile Include="lpImgViewer.cpp" />
<ClCompile Include="QSetCenterDlg.cpp" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\src\lpbdesigner\image.qrc">
@ -313,6 +332,19 @@
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
</CustomBuild>
<None Include="lpdesigner_en.ts" />
<CustomBuild Include="QSetCenterDlg.ui">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Uic%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\uic.exe" -o ".\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Uic%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\..\..\src\lpbdesigner\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="lpdesigner1.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

@ -76,6 +76,12 @@
<ClInclude Include="..\..\src\lpbdesigner\CDetectorUI.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\lpbdesigner\GeneratedFiles\ui_QSetCenterDlg.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="resource2.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\src\lpbdesigner\MainFrame.h">
@ -123,6 +129,12 @@
<CustomBuild Include="lpdesignerConfig.h">
<Filter>Header Files</Filter>
</CustomBuild>
<CustomBuild Include="QSetCenterDlg.h">
<Filter>Header Files</Filter>
</CustomBuild>
<CustomBuild Include="QSetCenterDlg.ui">
<Filter>Form Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\lpbdesigner\DrawTool.cpp">
@ -224,6 +236,15 @@
<ClCompile Include="lpdesignerConfig.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Debug\moc_QSetCenterDlg.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="..\..\src\lpbdesigner\GeneratedFiles\Release\moc_QSetCenterDlg.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="QSetCenterDlg.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Image Include="..\..\src\lpbdesigner\resource\app.png">
@ -235,4 +256,7 @@
<Filter>Translation Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="lpdesigner1.rc" />
</ItemGroup>
</Project>

Binary file not shown.

Binary file not shown.

@ -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

@ -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"));

@ -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()

@ -117,6 +117,7 @@ void QPLCDevice::onParaster(QByteArray recvData)
else if (cmd.toInt() == 2) //ÐÄÌøÓ¦´ð
{
onSendHeartBit();
emit sgRecvHeartBit();
}
else if (cmd.toInt() == 3)
{

@ -36,6 +36,7 @@ signals:
void sgTrigerCam(int camID);
void sgSendDataCallBack(QByteArray);
void sgRecvDataCallBack(QByteArray);
void sgRecvHeartBit();
private:
lptkRawTcpServer *m_rawTcpServer{ nullptr };
QMutex mMtLock;

@ -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

@ -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初始化

@ -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 <windows.h>
#include <Dbghelp.h>
#include <iostream>
#include <vector>
#include <tchar.h>
#include <iomanip>
#include <ctime>
#include <chrono>
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
mainDeclareDumpFile()
*/
#endif

@ -1,8 +1,10 @@
#include "valueMainUI.h"
#include <QtWidgets/QApplication>
#include "QSignleApplication.h"
#include "dumpfile.h"
int main(int argc, char *argv[])
{
DeclareDumpFile();
SingleApplication a(argc, argv,"valueMain");
if (!a.getInstanceRunning())
{

@ -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);
}
}
}
}
Q_SLOT void valueMainUI::onReacvHeartBit()
{
m_heartTimeout = 0;
}

@ -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 };

@ -164,6 +164,7 @@
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\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</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\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</IncludePath>
</QtMoc>
<ClInclude Include="dumpfile.h" />
<ClInclude Include="lpConfig.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\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</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets</IncludePath>

@ -187,6 +187,9 @@
<ClInclude Include="lpGlobalData.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="dumpfile.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="valueMainUI.rc" />

@ -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<cv::Mat>();
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(&param1_centeroffset, 1);
LP_ALGORITHM_PARAM param1_1("backgroundThresh", LP_INT, 15, QObject::tr("背景差异性阈值"));
lpAlgorithm->AddParam(&param1_1, 1);

Loading…
Cancel
Save