1、增加输出xy坐标对调功能

2、增加拍照触发滤波参数
3、修复PLC索引值删除型号时没清除已保存的索引参数问题,增加启动校验索引值是否有效
4、修复在线PLC型号切换不成功bug
5、lpengine模块增加不存在的task失败信息输出
master
bob.pan 4 years ago
parent 0dc4758b1b
commit 4f9db66375

@ -34,4 +34,18 @@
2021-10-20 2 2021-10-20 2
1、增加视场标定圆大小半径参数保存到配置文件中需要自定义大小时修改配置文件中的圆半径参数即可。 1、增加视场标定圆大小半径参数保存到配置文件中需要自定义大小时修改配置文件中的圆半径参数即可。
参数文件位置user/globalConfig.json 文件夹内pointCircle参数所对应的数值。默认最小是20 参数文件位置user/globalConfig.json 文件夹内pointCircle参数所对应的数值。默认最小是20
2021-10-22
1、串口通讯加入线程保护防止UI执行在多线程中引发崩溃
2021-10-25
1、修复模板标定页面引发的崩溃闪退bug
2021-10-25 2
1、修复标定页面XY偏移坐标不能输入小数点问题
2021-10-26
1、增加输出xy坐标对调功能
2、增加拍照触发滤波参数
3、修复PLC索引值删除型号时没清除已保存的索引参数问题增加启动校验索引值是否有效
4、修复在线PLC型号切换不成功bug
5、lpengine模块增加不存在的task失败信息输出
6、修复型号手动切换和在线切换发现的bug

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -87,6 +87,7 @@ bool CWfCtrl::initStation()
QMap<QString, IDetectorSolution*> solutionMap = pSolutionMgr->GetAllSolutions(); QMap<QString, IDetectorSolution*> solutionMap = pSolutionMgr->GetAllSolutions();
int nIndex = 1; int nIndex = 1;
bool bPLCIndex = false;
for (QMap<QString, IDetectorSolution*>::iterator it = solutionMap.begin(); it != solutionMap.end(); ++it) { for (QMap<QString, IDetectorSolution*>::iterator it = solutionMap.begin(); it != solutionMap.end(); ++it) {
QString key = it.key(); QString key = it.key();
IStation *pStation = new Station(this); IStation *pStation = new Station(this);
@ -104,11 +105,30 @@ bool CWfCtrl::initStation()
continue; continue;
pStation->addModel(var); pStation->addModel(var);
} }
if (!m_PLCIndexs.contains(key)) {
m_PLCIndexs.insert(key, QMap<QString, int>());
}
else {
QMap<QString, QMap<QString, int>>::iterator it = m_PLCIndexs.find(key);
if (it != m_PLCIndexs.end())
{
QStringList keys = it->keys();
foreach(QString var, keys)
{
if (!lstModels.contains(var))
{
(*it).remove(var);
bPLCIndex = true;
}
}
}
}
} }
m_pStationMap.insert(key, pStation); m_pStationMap.insert(key, pStation);
if (!m_PLCIndexs.contains(key)) { }
m_PLCIndexs.insert(key, QMap<QString, int>()); if (bPLCIndex == true)
} {
writeIndexParam();
} }
return true; return true;
} }
@ -182,6 +202,13 @@ bool CWfCtrl::IDeleteModel(QString nStation, QString strModel)
} }
} }
} }
QMap<QString, QMap<QString, int>>::iterator it = m_PLCIndexs.find(nStation);
if (it != m_PLCIndexs.end())
{
(*it).remove(strModel);
}
writeIndexParam();
return true; return true;
} }

@ -90,6 +90,7 @@ void lpImageCaliUI::showEvent(QShowEvent *event)
ui.m_lineEdit_Xoffset->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationXOffset_1)); ui.m_lineEdit_Xoffset->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationXOffset_1));
ui.m_lineEdit_Yoffset->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationYOffset_1)); ui.m_lineEdit_Yoffset->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationYOffset_1));
ui.checkBox_XY_1->setChecked(lpGlobalConfig::instance()->m_StationXYTrans_1);//输出坐标取反
m_point1_1 = lpGlobalConfig::instance()->point1_1; m_point1_1 = lpGlobalConfig::instance()->point1_1;
m_point2_1 = lpGlobalConfig::instance()->point2_1; m_point2_1 = lpGlobalConfig::instance()->point2_1;
@ -124,6 +125,7 @@ void lpImageCaliUI::showEvent(QShowEvent *event)
ui.m_lineEdit_Xoffset_2->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationXOffset_2)); ui.m_lineEdit_Xoffset_2->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationXOffset_2));
ui.m_lineEdit_Yoffset_2->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationYOffset_2)); ui.m_lineEdit_Yoffset_2->setText(QString("%1").arg(lpGlobalConfig::instance()->m_StationYOffset_2));
ui.checkBox_XY_2->setChecked(lpGlobalConfig::instance()->m_StationXYTrans_2);//输出坐标取反
m_point1_2 = lpGlobalConfig::instance()->point1_2; m_point1_2 = lpGlobalConfig::instance()->point1_2;
m_point2_2 = lpGlobalConfig::instance()->point2_2; m_point2_2 = lpGlobalConfig::instance()->point2_2;
@ -238,8 +240,9 @@ Q_SLOT void lpImageCaliUI::onButtonClicked()
double length = ui.m_lineEdit_length->text().toDouble(); double length = ui.m_lineEdit_length->text().toDouble();
double scale = length * 1.0 / ( pixlength > 0 ? pixlength:length); double scale = length * 1.0 / ( pixlength > 0 ? pixlength:length);
ui.m_lineEdit_scale->setText(QString("%1").arg(scale)); ui.m_lineEdit_scale->setText(QString("%1").arg(scale));
lpGlobalConfig::instance()->m_StationXOffset_1 = ui.m_lineEdit_Xoffset->text().toInt(); lpGlobalConfig::instance()->m_StationXYTrans_1 = ui.checkBox_XY_1->isChecked();//输出坐标取反
lpGlobalConfig::instance()->m_StationYOffset_1 = ui.m_lineEdit_Yoffset->text().toInt(); lpGlobalConfig::instance()->m_StationXOffset_1 = ui.m_lineEdit_Xoffset->text().toDouble();
lpGlobalConfig::instance()->m_StationYOffset_1 = ui.m_lineEdit_Yoffset->text().toDouble();
lpGlobalConfig::instance()->point1_1 = m_point1_1; lpGlobalConfig::instance()->point1_1 = m_point1_1;
lpGlobalConfig::instance()->point2_1 = m_point2_1; lpGlobalConfig::instance()->point2_1 = m_point2_1;
lpGlobalConfig::instance()->fLength_1 = length; lpGlobalConfig::instance()->fLength_1 = length;
@ -252,8 +255,9 @@ Q_SLOT void lpImageCaliUI::onButtonClicked()
double length = ui.m_lineEdit_length_2->text().toDouble(); double length = ui.m_lineEdit_length_2->text().toDouble();
double scale = length * 1.0 / (pixlength > 0 ? pixlength : length); double scale = length * 1.0 / (pixlength > 0 ? pixlength : length);
ui.m_lineEdit_scale_2->setText(QString("%1").arg(scale)); ui.m_lineEdit_scale_2->setText(QString("%1").arg(scale));
lpGlobalConfig::instance()->m_StationXOffset_2 = ui.m_lineEdit_Xoffset_2->text().toInt(); lpGlobalConfig::instance()->m_StationXYTrans_2 = ui.checkBox_XY_2->isChecked();//输出坐标取反
lpGlobalConfig::instance()->m_StationYOffset_2 = ui.m_lineEdit_Yoffset_2->text().toInt(); lpGlobalConfig::instance()->m_StationXOffset_2 = ui.m_lineEdit_Xoffset_2->text().toDouble();
lpGlobalConfig::instance()->m_StationYOffset_2 = ui.m_lineEdit_Yoffset_2->text().toDouble();
lpGlobalConfig::instance()->point1_2 = m_point1_2; lpGlobalConfig::instance()->point1_2 = m_point1_2;
lpGlobalConfig::instance()->point2_2 = m_point2_2; lpGlobalConfig::instance()->point2_2 = m_point2_2;
lpGlobalConfig::instance()->fLength_2 = length; lpGlobalConfig::instance()->fLength_2 = length;

@ -284,6 +284,24 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="5" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<widget class="QLabel" name="label_19">
<property name="text">
<string>XY坐标输出</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_XY_1">
<property name="text">
<string>位置互换</string>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -572,6 +590,24 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="5" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<widget class="QLabel" name="label_20">
<property name="text">
<string>XY坐标输出</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_XY_2">
<property name="text">
<string>位置互换</string>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>

@ -308,9 +308,6 @@ bool CMainFrame::InitGraphView()
bool CMainFrame::InitCurrentTask() bool CMainFrame::InitCurrentTask()
{ {
if (!InitCurrentNode())
return false;
ui->tableWidget->setRowCount(0); ui->tableWidget->setRowCount(0);
ui->tableWidget->clearContents(); ui->tableWidget->clearContents();
ui->tableWidget_2->setRowCount(0); ui->tableWidget_2->setRowCount(0);
@ -319,6 +316,10 @@ bool CMainFrame::InitCurrentTask()
ui->gv_output->clear(); ui->gv_output->clear();
ui->textEdit->clear(); ui->textEdit->clear();
if (!InitCurrentNode())
return false;
IDetectorTask* ptask = currentTask(); IDetectorTask* ptask = currentTask();
if (ptask) if (ptask)
{ {
@ -960,9 +961,7 @@ bool CMainFrame::OnSelectAlgo()
item->setText(strText); item->setText(strText);
return true; return true;
} }
} }
} }
return true; return true;
@ -1187,10 +1186,13 @@ bool CMainFrame::OnEditParam()
m_tParamDlg.setWindowModality(Qt::ApplicationModal); m_tParamDlg.setWindowModality(Qt::ApplicationModal);
m_tParamDlg.setAttribute(Qt::WA_ShowModal, true); m_tParamDlg.setAttribute(Qt::WA_ShowModal, true);
m_tParamDlg.ShowParamDlg(pParam); m_tParamDlg.ShowParamDlg(pParam);
QString st = _pOldTask->GetTaskInfo()->strName; if (_pOldTask)
if (!m_TaskChangeList.contains(st))
{ {
m_TaskChangeList.append(st); QString st = _pOldTask->GetTaskInfo()->strName;
if (!m_TaskChangeList.contains(st))
{
m_TaskChangeList.append(st);
}
} }
return true; return true;
} }

@ -191,6 +191,11 @@ void CDetectorEngine::detectFuncByName(cv::Mat srcImg, QString solutionName, QSt
rltMap.insert("taskID", pTask->GetID()); rltMap.insert("taskID", pTask->GetID());
rltMap.insert("originImage", EngineBase::convMat2QImage(srcImg)); rltMap.insert("originImage", EngineBase::convMat2QImage(srcImg));
} }
else {
rltMap.insert("solutionName", pSolution->GetSolutionName());
rltMap.insert("taskName", modeName);
rltMap.insert("taskCali", false);//模板未标定
}
} }
int nTime = mTime.elapsed(); int nTime = mTime.elapsed();

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

@ -54,6 +54,9 @@
<ClInclude Include="resource.h"> <ClInclude Include="resource.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="dumpfile.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="Enchanter.rc" /> <ResourceCompile Include="Enchanter.rc" />

@ -3,10 +3,12 @@
#include "IMainWidget.h" #include "IMainWidget.h"
#include <QLibrary> #include <QLibrary>
#include "QSignleApplication.h" #include "QSignleApplication.h"
#include "dumpfile.h"
#pragma execution_character_set("utf-8") #pragma execution_character_set("utf-8")
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
DeclareDumpFile();
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
IMainWidget* pMain = nullptr; IMainWidget* pMain = nullptr;
QWidget* pMainWid = nullptr; QWidget* pMainWid = nullptr;

@ -84,6 +84,7 @@
</DebugInformationFormat> </DebugInformationFormat>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<Optimization>MaxSpeed</Optimization>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>

@ -1,6 +0,0 @@
 algEg.cpp
caliCenter.cpp
f:\valueproject\newvalve\tpvs17\calicenter\calicenter.cpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
正在生成代码...
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(1216,5): warning MSB8012: TargetPath(F:\ValueProject\newValve\tpvs17\x64\Debug\caliCenterd.dll) 与 Linker 的 OutputFile 属性值(F:\ValueProject\newValve\runner17\algorithmLib\caliCenterd.dll)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。
caliCenter.vcxproj -> F:\ValueProject\newValve\tpvs17\x64\Debug\caliCenterd.dll

@ -142,10 +142,16 @@ CMainWin::CMainWin(QWidget *parent)
{ {
ui.groupBox_2->setVisible(false); ui.groupBox_2->setVisible(false);
} }
m_timerA.setSingleShot(true);
m_timerB.setSingleShot(true);
} }
CMainWin::~CMainWin() CMainWin::~CMainWin()
{ {
m_timerA.stop();
m_timerB.stop();
DELETE_POINTER(m_pCameraTrig); DELETE_POINTER(m_pCameraTrig);
if (m_db) if (m_db)
{ {
@ -358,6 +364,11 @@ Q_SLOT void CMainWin::onAppanalysis(SComFrame frame)
{ {
if (nCameraID == 1) if (nCameraID == 1)
{ {
if (m_timerA.isActive())
return;
int t = lpGlobalConfig::instance()->trigerFilter;
if(t>0)
m_timerA.start(t);
if (m_StationInfo_1.m_bRunEnable == true) if (m_StationInfo_1.m_bRunEnable == true)
{ {
QString strCam = lpGlobalConfig::instance()->m_StationCamKey_1; QString strCam = lpGlobalConfig::instance()->m_StationCamKey_1;
@ -385,6 +396,12 @@ Q_SLOT void CMainWin::onAppanalysis(SComFrame frame)
} }
else if (nCameraID == 2) else if (nCameraID == 2)
{ {
if (m_timerB.isActive())
return;
int t = lpGlobalConfig::instance()->trigerFilter;
if (t > 0)
m_timerB.start(t);
if (m_StationInfo_2.m_bRunEnable == true) if (m_StationInfo_2.m_bRunEnable == true)
{ {
QString strCam = lpGlobalConfig::instance()->m_StationCamKey_2; QString strCam = lpGlobalConfig::instance()->m_StationCamKey_2;
@ -417,11 +434,21 @@ Q_SLOT void CMainWin::onAppanalysis(SComFrame frame)
{ {
if (nCameraID == 1) if (nCameraID == 1)
{ {
if (m_timerA.isActive())
return;
int t = lpGlobalConfig::instance()->trigerFilter;
if (t > 0)
m_timerA.start(t);
QString strCam = lpGlobalConfig::instance()->m_StationCamKey_1; QString strCam = lpGlobalConfig::instance()->m_StationCamKey_1;
m_pCoreCtrl->ISnapImage(QStringList() << strCam); m_pCoreCtrl->ISnapImage(QStringList() << strCam);
} }
else if (nCameraID == 2) else if (nCameraID == 2)
{ {
if (m_timerB.isActive())
return;
int t = lpGlobalConfig::instance()->trigerFilter;
if (t > 0)
m_timerB.start(t);
QString strCam = lpGlobalConfig::instance()->m_StationCamKey_2; QString strCam = lpGlobalConfig::instance()->m_StationCamKey_2;
m_pCoreCtrl->ISnapImage(QStringList() << strCam); m_pCoreCtrl->ISnapImage(QStringList() << strCam);
} }
@ -477,6 +504,7 @@ void CMainWin::onHeartComm(SComFrame &frame)
if (m_pWfCtrl) { if (m_pWfCtrl) {
m_pWfCtrl->ISelModel(var, strModel); m_pWfCtrl->ISelModel(var, strModel);
lpGlobalConfig::instance()->m_StationRunModel_1 = strModel;
} }
} }
m_StationInfo_1.m_bRunEnable = true; m_StationInfo_1.m_bRunEnable = true;
@ -521,6 +549,7 @@ void CMainWin::onHeartComm(SComFrame &frame)
.arg(QDateTime::currentDateTime().toString("hh:mm:ss zzz")); .arg(QDateTime::currentDateTime().toString("hh:mm:ss zzz"));
if (m_pWfCtrl) { if (m_pWfCtrl) {
m_pWfCtrl->ISelModel(var, strModel); m_pWfCtrl->ISelModel(var, strModel);
lpGlobalConfig::instance()->m_StationRunModel_2 = strModel;
} }
} }
m_StationInfo_2.m_bRunEnable = true; m_StationInfo_2.m_bRunEnable = true;
@ -550,6 +579,12 @@ void CMainWin::onHeartComm(SComFrame &frame)
} }
} }
} }
else {
nS1 = -1;
nS2 = -1;
m_StationInfo_1.m_PLCID = 0;
m_StationInfo_2.m_PLCID = 0;
}
} }
Q_SLOT void CMainWin::onHeardBit() Q_SLOT void CMainWin::onHeardBit()
@ -898,8 +933,8 @@ void CMainWin::onInitSerial()
//load seriport dll //load seriport dll
if (m_pSerialPort)//如果文件存在 使用自定义的串口 if (m_pSerialPort)//如果文件存在 使用自定义的串口
{ {
m_pSerialPort->loadAnalysefunc(this, &CMainWin::onAppanalysis); m_pSerialPort->loadAnalysefunc(this, &CMainWin::onRecvComData);
connect(this, SIGNAL(sgRecvData(SComFrame)), this, SLOT(onAppanalysis(SComFrame)));
//关闭框架的串口使用 //关闭框架的串口使用
QString strDefaultPort = lpSysConfig::instance()->m_ComName; QString strDefaultPort = lpSysConfig::instance()->m_ComName;
int baut = lpSysConfig::instance()->m_Baut; int baut = lpSysConfig::instance()->m_Baut;
@ -912,6 +947,8 @@ void CMainWin::onInitSerial()
} }
connect(&m_HeartBit, SIGNAL(timeout()), this, SLOT(onHeardBit())); connect(&m_HeartBit, SIGNAL(timeout()), this, SLOT(onHeardBit()));
m_HeartBit.start(300); m_HeartBit.start(300);
} }
} }
} }
@ -1180,7 +1217,7 @@ Q_SLOT void CMainWin::onLogInOut(QString strName, int level, int state)
Q_SLOT void CMainWin::onTestMode(int val) Q_SLOT void CMainWin::onTestMode(int val)
{ {
if (val == 0) { if (val == 0) {
m_pCameraTrig->start(1000); m_pCameraTrig->start(5000);
} }
else if(val ==1){ else if(val ==1){
m_pCameraTrig->stop(); m_pCameraTrig->stop();
@ -1406,15 +1443,29 @@ void CMainWin::IEngineResult(QVariantMap vMap)
int stationID = 0; int stationID = 0;
if (solutionName == lpGlobalConfig::instance()->m_StationSolution_1) if (solutionName == lpGlobalConfig::instance()->m_StationSolution_1)
{ {
centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationXOffset_1; if (lpGlobalConfig::instance()->m_StationXYTrans_1 == true) {
centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationYOffset_1; centerY = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationXOffset_1;
centerX = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationYOffset_1;
}
else {
centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationXOffset_1;
centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationYOffset_1;
}
sendResult(1, dAngle, centerX, centerY); sendResult(1, dAngle, centerX, centerY);
stationID = 1; stationID = 1;
} }
else if (solutionName == lpGlobalConfig::instance()->m_StationSolution_2) else if (solutionName == lpGlobalConfig::instance()->m_StationSolution_2)
{ {
centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationXOffset_2; if (lpGlobalConfig::instance()->m_StationXYTrans_2 == true) {
centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationYOffset_2; centerY = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationXOffset_2;
centerX = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationYOffset_2;
}
else {
centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationXOffset_2;
centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationYOffset_2;
}
sendResult(2, dAngle, centerX, centerY); sendResult(2, dAngle, centerX, centerY);
stationID = 2; stationID = 2;
} }
@ -1456,7 +1507,13 @@ void CMainWin::IEngineResult(QVariantMap vMap)
strResult += " no found Value"; strResult += " no found Value";
} }
else { else {
strResult += tr(" center:(%1,%2)").arg(centerX).arg(centerY); int lowX = (centerX - (int)centerX) * 1000;
double X = (int)centerX + lowX / 1000.0;
int lowY = (centerY - (int)centerY) * 1000;
double Y = (int)centerX + lowY / 1000.0;
strResult += tr(" center:(%1,%2)").arg(QString::number(X, 'f', 3)).arg(QString::number(Y, 'f', 3));
} }
emit sgShowLog(stationID, strResult); emit sgShowLog(stationID, strResult);
} }
@ -1581,6 +1638,11 @@ void CMainWin::saveImage(const QImage& m_pixmap, QString m_path, QString filenam
workTread->start(); workTread->start();
} }
void CMainWin::onRecvComData(SComFrame frame)
{
emit sgRecvData(frame);
}
void CMainWin::onInitDiskClean() void CMainWin::onInitDiskClean()
{ {
{ {

@ -82,13 +82,14 @@ protected:
QString SecondTimeString(quint64 value); QString SecondTimeString(quint64 value);
Q_SLOT void onLineseCheck(bool bFlag); Q_SLOT void onLineseCheck(bool bFlag);
void saveImage(const QImage& m_pixmap, QString m_path, QString filename); void saveImage(const QImage& m_pixmap, QString m_path, QString filename);
void onRecvComData(SComFrame frame);
signals: signals:
void sgSelModel(int, QString); void sgSelModel(int, QString);
void sgSendChangeUI(QString, QString); void sgSendChangeUI(QString, QString);
void sgShowLog(int, QString); void sgShowLog(int, QString);
void sgShowImg(int, QImage); void sgShowImg(int, QImage);
void sgShowSrcImg(QString strkey, QImage); void sgShowSrcImg(QString strkey, QImage);
void sgRecvData(SComFrame frame);
private://中英翻译 private://中英翻译
void SearchQmFile(const QString & strDir); void SearchQmFile(const QString & strDir);
void SetTranslator(const QString strPath); void SetTranslator(const QString strPath);
@ -166,6 +167,8 @@ private:
QStringList m_solotions;//解决方案名列表 QStringList m_solotions;//解决方案名列表
QTimer m_timerA;
QTimer m_timerB;
}; };
#endif #endif

@ -22,7 +22,7 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Main Version: 1.6.1020&lt;/p&gt;&lt;p&gt;Tadpole Version: 3.0.00&lt;/p&gt;&lt;p&gt;Final update date:20211020 11:00:00&lt;/p&gt;&lt;p&gt;Final Test data:20211020 11:00:00&lt;/p&gt;&lt;p&gt;单工位汽轮定位型号判别&lt;/p&gt;&lt;p&gt;CopyRight (C) 2016-2025 HangZhou Leaper &lt;/p&gt;&lt;p&gt;摩汽配件产品部&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Main Version: 1.6.1026&lt;/p&gt;&lt;p&gt;Tadpole Version: 3.0.00&lt;/p&gt;&lt;p&gt;Final update date:20211026 18:00:00&lt;/p&gt;&lt;p&gt;Final Test data:20211026 18:00:00&lt;/p&gt;&lt;p&gt;单工位汽轮定位型号判别&lt;/p&gt;&lt;p&gt;CopyRight (C) 2016-2025 HangZhou Leaper &lt;/p&gt;&lt;p&gt;摩汽配件产品部&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>

@ -36,6 +36,7 @@ Q_SLOT void QDeviceMgrUI::onButtonClicked()
lpGlobalConfig::instance()->m_StationSolution_1 = ui.comboBox_solution1->currentText(); lpGlobalConfig::instance()->m_StationSolution_1 = ui.comboBox_solution1->currentText();
lpGlobalConfig::instance()->m_StationSolution_2 = ui.comboBox_solution2->currentText(); lpGlobalConfig::instance()->m_StationSolution_2 = ui.comboBox_solution2->currentText();
//lpGlobalConfig::instance()->trigerFilter = ui.lineEdit->text().toInt();
lpGlobalConfig::instance()->writeConfig(); lpGlobalConfig::instance()->writeConfig();
} }
} }
@ -53,7 +54,8 @@ void QDeviceMgrUI::setParam()
ui.spinBox->setValue(lpSysConfig::instance()->m_MinSpaceSizeG); ui.spinBox->setValue(lpSysConfig::instance()->m_MinSpaceSizeG);
ui.spinBox_2->setValue(lpSysConfig::instance()->m_CheckFileDays); ui.spinBox_2->setValue(lpSysConfig::instance()->m_CheckFileDays);
ui.comboBox->setCurrentText(lpSysConfig::instance()->m_CurLanguage); ui.comboBox->setCurrentText(lpSysConfig::instance()->m_CurLanguage);
ui.lineEdit->setText(QString("%1").arg(lpGlobalConfig::instance()->trigerFilter));
} }
void QDeviceMgrUI::getParam() void QDeviceMgrUI::getParam()
@ -72,6 +74,9 @@ void QDeviceMgrUI::getParam()
QString curText = ui.comboBox->currentText(); QString curText = ui.comboBox->currentText();
emit sgChangeLanguage(curText); emit sgChangeLanguage(curText);
lpGlobalConfig::instance()->trigerFilter = ui.lineEdit->text().toInt();
lpGlobalConfig::instance()->writeConfig();
} }
void QDeviceMgrUI::showEvent(QShowEvent *event) void QDeviceMgrUI::showEvent(QShowEvent *event)

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>531</width> <width>531</width>
<height>360</height> <height>361</height>
</rect> </rect>
</property> </property>
<property name="font"> <property name="font">
@ -264,43 +264,43 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label_18"> <widget class="QLabel" name="label_10">
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>波特率</string> <string>串口名</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0"> <item row="0" column="1">
<widget class="QLabel" name="label_10"> <widget class="QLineEdit" name="m_lineEdit_ComName">
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
</font> </font>
</property> </property>
<property name="text">
<string>串口名:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="1" column="0">
<widget class="QLineEdit" name="m_lineEdit_ComName"> <widget class="QLabel" name="label_18">
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
</font> </font>
</property> </property>
<property name="text">
<string>波特率:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
@ -316,6 +316,16 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>触发滤波:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>

@ -31,6 +31,8 @@ void lpGlobalConfig::readConfig()
QString strSolution2 = rootObj.value("station_solution_2").toString(); QString strSolution2 = rootObj.value("station_solution_2").toString();
QString strRunModel1 = rootObj.value("station_runModel_1").toString(); QString strRunModel1 = rootObj.value("station_runModel_1").toString();
QString strRunModel2 = rootObj.value("station_runModel_2").toString(); QString strRunModel2 = rootObj.value("station_runModel_2").toString();
m_StationXYTrans_1 = rootObj.value("station_xytrans_1").toBool();
m_StationXYTrans_2 = rootObj.value("station_xytrans_2").toBool();
m_StationCamKey_1 = strCam1; m_StationCamKey_1 = strCam1;
m_StationCamKey_2 = strCam2; m_StationCamKey_2 = strCam2;
m_StationSolution_1 = strSolution1; m_StationSolution_1 = strSolution1;
@ -69,6 +71,7 @@ void lpGlobalConfig::readConfig()
m_StationYOffset_2 = rootObj.value("StationYOffset_2").toDouble(0.0); m_StationYOffset_2 = rootObj.value("StationYOffset_2").toDouble(0.0);
pointCircle = rootObj.value("pointCircle").toInt(20); pointCircle = rootObj.value("pointCircle").toInt(20);
trigerFilter = rootObj.value("trigerFilter").toInt(1000);
} }
} }
file.close(); file.close();
@ -88,6 +91,9 @@ void lpGlobalConfig::writeConfig()
rootObj.insert("station_runModel_1", m_StationRunModel_1); rootObj.insert("station_runModel_1", m_StationRunModel_1);
rootObj.insert("station_runModel_2", m_StationRunModel_2); rootObj.insert("station_runModel_2", m_StationRunModel_2);
rootObj.insert("station_xytrans_1", m_StationXYTrans_1);
rootObj.insert("station_xytrans_2", m_StationXYTrans_2);
rootObj.insert("onlineMode", m_bOnlineMode); rootObj.insert("onlineMode", m_bOnlineMode);
rootObj.insert("point1_x_1", point1_1.x()); rootObj.insert("point1_x_1", point1_1.x());
@ -110,6 +116,7 @@ void lpGlobalConfig::writeConfig()
rootObj.insert("StationXOffset_2",m_StationXOffset_2); rootObj.insert("StationXOffset_2",m_StationXOffset_2);
rootObj.insert("StationYOffset_2",m_StationYOffset_2); rootObj.insert("StationYOffset_2",m_StationYOffset_2);
rootObj.insert("pointCircle", pointCircle); rootObj.insert("pointCircle", pointCircle);
rootObj.insert("trigerFilter", trigerFilter);
QJsonDocument doc(rootObj); QJsonDocument doc(rootObj);
QByteArray writeData = doc.toJson(); QByteArray writeData = doc.toJson();

@ -33,7 +33,8 @@ public:
double m_StationScale_1{ 1.0 };//比例尺 长度/像素 double m_StationScale_1{ 1.0 };//比例尺 长度/像素
double m_StationXOffset_1{ 0.0 };//物理标点横向偏移 double m_StationXOffset_1{ 0.0 };//物理标点横向偏移
double m_StationYOffset_1{ 0.0 };//物理标点纵向偏移 double m_StationYOffset_1{ 0.0 };//物理标点纵向偏移
bool m_StationXYTrans_1{ false };//输出坐标取反
//坐标标定 工位B //坐标标定 工位B
QPoint point1_2;//标定点 1 QPoint point1_2;//标定点 1
QPoint point2_2;//标定点 2 QPoint point2_2;//标定点 2
@ -41,11 +42,14 @@ public:
double m_StationScale_2{ 1.0 }; double m_StationScale_2{ 1.0 };
double m_StationXOffset_2{ 0.0 }; double m_StationXOffset_2{ 0.0 };
double m_StationYOffset_2{ 0.0 }; double m_StationYOffset_2{ 0.0 };
bool m_StationXYTrans_2{ false };//输出坐标取反
int pointCircle{ 20 };//标定点 直径 int pointCircle{ 20 };//标定点 直径
bool m_bOnlineMode{ false };//在线模式 bool m_bOnlineMode{ false };//在线模式
QString m_rootPath; QString m_rootPath;
int trigerFilter{ 1000 };//触发滤波时间
}; };
#endif #endif

@ -14,11 +14,6 @@
<Extensions>qrc;*</Extensions> <Extensions>qrc;*</Extensions>
<ParseFiles>false</ParseFiles> <ParseFiles>false</ParseFiles>
</Filter> </Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
<Extensions>qrc;*</Extensions>
<ParseFiles>false</ParseFiles>
</Filter>
<Filter Include="Generated Files"> <Filter Include="Generated Files">
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier> <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
<Extensions>moc;h;cpp</Extensions> <Extensions>moc;h;cpp</Extensions>
@ -58,6 +53,11 @@
<Filter Include="ImageStandardUI"> <Filter Include="ImageStandardUI">
<UniqueIdentifier>{d14394a4-d4ae-4d47-b726-613b27aa46e7}</UniqueIdentifier> <UniqueIdentifier>{d14394a4-d4ae-4d47-b726-613b27aa46e7}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Header Files\Resource Files">
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
<Extensions>qrc;*</Extensions>
<ParseFiles>false</ParseFiles>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="lpMain.cpp"> <ClCompile Include="lpMain.cpp">
@ -414,45 +414,45 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Image Include="..\..\src\lpMain\wanfeng.png"> <Image Include="..\..\src\lpMain\wanfeng.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\wanfeng2.png"> <Image Include="..\..\src\lpMain\wanfeng2.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\help.png"> <Image Include="..\..\src\lpMain\toolBar\help.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\administrator.png"> <Image Include="..\..\src\lpMain\toolBar\administrator.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\save.png"> <Image Include="..\..\src\lpMain\toolBar\save.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\setting.png"> <Image Include="..\..\src\lpMain\toolBar\setting.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\test.png"> <Image Include="..\..\src\lpMain\toolBar\test.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\cali.png"> <Image Include="..\..\src\lpMain\toolBar\cali.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\model.png"> <Image Include="..\..\src\lpMain\toolBar\model.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\toolBar\education24.png"> <Image Include="..\..\src\lpMain\toolBar\education24.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\app.png"> <Image Include="..\..\src\lpMain\app.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
<Image Include="..\..\src\lpMain\app2.png"> <Image Include="..\..\src\lpMain\app2.png">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</Image> </Image>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<QtRcc Include="..\..\src\lpMain\lpMain.qrc"> <QtRcc Include="..\..\src\lpMain\lpMain.qrc">
<Filter>Resource Files</Filter> <Filter>Header Files\Resource Files</Filter>
</QtRcc> </QtRcc>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -13,6 +13,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpMain", "lpMain\lpMain.vcx
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Report", "Report\Report.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Report", "Report\Report.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tpCamVirtual", "tpCamVirtual\tpCamVirtual.vcxproj", "{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpdesigner", "lpdesigner\lpdesigner.vcxproj", "{616EB73F-66E3-46FF-B423-1A5B7E6AAB8B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpbengine", "lpbengine\lpbengine.vcxproj", "{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Enchanter", "Enchanter\Enchanter.vcxproj", "{7B76D75A-0E01-451E-880E-FB9AC63A914B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpCoreCtrl", "lpCoreCtrl\lpCoreCtrl.vcxproj", "{784071A9-BF94-4D27-B62E-588ACD7E0633}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
@ -53,6 +63,40 @@ Global
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.ActiveCfg = Release|x64 {B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.ActiveCfg = Release|x64
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.Build.0 = Release|x64 {B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.Build.0 = Release|x64
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x86.ActiveCfg = Release|x64 {B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x86.ActiveCfg = Release|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x64.ActiveCfg = Debug|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x64.Build.0 = Debug|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x86.ActiveCfg = Debug|Win32
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x86.Build.0 = Debug|Win32
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x64.ActiveCfg = Release|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x64.Build.0 = Release|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x86.ActiveCfg = Release|Win32
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x86.Build.0 = Release|Win32
{616EB73F-66E3-46FF-B423-1A5B7E6AAB8B}.Debug|x64.ActiveCfg = Debug|x64
{616EB73F-66E3-46FF-B423-1A5B7E6AAB8B}.Debug|x64.Build.0 = Debug|x64
{616EB73F-66E3-46FF-B423-1A5B7E6AAB8B}.Debug|x86.ActiveCfg = Debug|x64
{616EB73F-66E3-46FF-B423-1A5B7E6AAB8B}.Release|x64.ActiveCfg = Release|x64
{616EB73F-66E3-46FF-B423-1A5B7E6AAB8B}.Release|x64.Build.0 = Release|x64
{616EB73F-66E3-46FF-B423-1A5B7E6AAB8B}.Release|x86.ActiveCfg = Release|x64
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Debug|x64.ActiveCfg = Debug|x64
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Debug|x64.Build.0 = Debug|x64
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Debug|x86.ActiveCfg = Debug|Win32
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Debug|x86.Build.0 = Debug|Win32
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Release|x64.ActiveCfg = Release|x64
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Release|x64.Build.0 = Release|x64
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Release|x86.ActiveCfg = Release|Win32
{DC221ADF-9D25-40E0-90AD-CC2C497F6FB9}.Release|x86.Build.0 = Release|Win32
{7B76D75A-0E01-451E-880E-FB9AC63A914B}.Debug|x64.ActiveCfg = Debug|x64
{7B76D75A-0E01-451E-880E-FB9AC63A914B}.Debug|x64.Build.0 = Debug|x64
{7B76D75A-0E01-451E-880E-FB9AC63A914B}.Debug|x86.ActiveCfg = Debug|x64
{7B76D75A-0E01-451E-880E-FB9AC63A914B}.Release|x64.ActiveCfg = Release|x64
{7B76D75A-0E01-451E-880E-FB9AC63A914B}.Release|x64.Build.0 = Release|x64
{7B76D75A-0E01-451E-880E-FB9AC63A914B}.Release|x86.ActiveCfg = Release|x64
{784071A9-BF94-4D27-B62E-588ACD7E0633}.Debug|x64.ActiveCfg = Debug|x64
{784071A9-BF94-4D27-B62E-588ACD7E0633}.Debug|x64.Build.0 = Debug|x64
{784071A9-BF94-4D27-B62E-588ACD7E0633}.Debug|x86.ActiveCfg = Debug|x64
{784071A9-BF94-4D27-B62E-588ACD7E0633}.Release|x64.ActiveCfg = Release|x64
{784071A9-BF94-4D27-B62E-588ACD7E0633}.Release|x64.Build.0 = Release|x64
{784071A9-BF94-4D27-B62E-588ACD7E0633}.Release|x86.ActiveCfg = Release|x64
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

Loading…
Cancel
Save