You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
whellvalue/src/tpMain/lpGlobalConfig.cpp

353 lines
13 KiB
C++

5 years ago
#include "lpGlobalConfig.h"
5 years ago
#include "QZkJsonParser.h"
#include <QSettings>
#include "QApplication"
5 years ago
#define WHEEL_SELFDEFINE_FILE "\\user\\selfdefine.json"
#define WHEEL_SELFDEFINE_DETECTIMAGE "DetectImage"
#define WHEEL_SELFDEFINE_ALGPARA "AlgPara"//算法参数
#define WHEEL_SELFDEFINE_AUTOITEM "AutoSystem"
#define WHEEL_SELFDEFINE_PLCPARA "plcPara"
#define WHEEL_D2H_KEY "Dia2Th"
#define WHEEL_D2H_K "k"
#define WHEEL_D2H_B "b"
#pragma execution_character_set("utf-8")
5 years ago
5 years ago
lpGlobalConfig::lpGlobalConfig()
5 years ago
: IsOnline(0), IsDetect(0), IsCheck(false)
{
totalDetectNum = 0;
totalUnDetectNum = 0;
m_startDetectFlags = false;
m_Debug = 0;
m_k = -0.00077528844;
m_b = 0.786244571;
bUseDiameter = bUseThickness = false;
}
5 years ago
lpGlobalConfig::~lpGlobalConfig()
5 years ago
{
//save();
}
5 years ago
void lpGlobalConfig::init(QString strPath)
5 years ago
{
m_applicationDirPath = strPath;
QString fileMyself = m_applicationDirPath + WHEEL_SELFDEFINE_FILE;
QJsonObject jsMyself = QZkJsonParser::ReadJsonAuto(fileMyself);
tcpServerPort = jsMyself.value("tcpServerPort").toInt(10100);
webSocketPort = jsMyself.value("webSocketPort").toInt(10110);
bRunBackRunning = jsMyself.value("runBackRnning").toBool(false);
bRunBackClosing = jsMyself.value("runBackClosing").toBool(false);//关闭页面时自动后台运行
strSysTitle = jsMyself.value("systitle").toString(QObject::tr("识别定位一体系统"));//系统标题
5 years ago
QJsonObject algObj = jsMyself.value(WHEEL_SELFDEFINE_ALGPARA).toObject();
if (!algObj.isEmpty())
{
algParam.m_AlgThres = algObj.value("Threshold").toInt(15);
algParam.m_RatioDetectType = algObj.value("RatioType").toInt(0);
algParam.m_bUseEqual = algObj.value("bEqual").toBool(false);//使用使用图像增强
algParam.m_filterSize = algObj.value("filterSize").toInt(50);//过滤圆大小
algParam.m_Circle_Polarity = algObj.value("circle_polarity").toInt(0);
algParam.m_Circle_EdgeWidth = algObj.value("circle_edgewidth").toInt(3);
algParam.m_Circle_ACThres = algObj.value("circle_acthres").toInt(3);
algParam.m_UseBackground = algObj.value("useBackground").toInt(0);
5 years ago
}
5 years ago
QJsonObject detectImage = jsMyself.value(WHEEL_SELFDEFINE_DETECTIMAGE).toObject();
if (!detectImage.isEmpty())
{
m_Debug = detectImage.value("Debug").toInt(1001);
5 years ago
bSaveCutOKImg = detectImage.value("saveCutOKImg").toBool();
bSaveCutNGImg = detectImage.value("saveCutNGImg").toBool();
bSaveSrcNGImg = detectImage.value("saveSrcNGImg").toBool();
bSaveSrcOKImg = detectImage.value("saveSrcOKImg").toBool();
bSaveSrcNGImg_value = detectImage.value("saveSrcNGImg_value").toBool();
bSaveSrcOKImg_value = detectImage.value("saveSrcOKImg_value").toBool();
5 years ago
m_SaveImgDirPath = detectImage.value("SaveImgPath").toString();
if (m_SaveImgDirPath.isEmpty())
m_SaveImgDirPath = m_applicationDirPath;
}
QJsonObject autosystemobj = jsMyself.value(WHEEL_SELFDEFINE_AUTOITEM).toObject();
if (!autosystemobj.isEmpty())
{
m_AutoSendTick2COM = autosystemobj.value("AutoSendTick2COM").toInt(0);
m_AutoSendTick2Net = autosystemobj.value("AutoSendTick2Net").toInt(0);
m_SendChannelRes2COM = autosystemobj.value("SendChannelRes2COM").toInt(0);
m_SendChannelRes2Net = autosystemobj.value("SendChannelRes2Net").toInt(0);
m_SendDetectStr2Net = autosystemobj.value("SendDetectStr2Net").toInt(0);
m_IsUseRaster = autosystemobj.value("IsUseRaster").toInt(0);
m_SaveD2HCsv = autosystemobj.value("SaveD2HCsv").toInt(0);
m_IsUseChannel = autosystemobj.value("IsUseChannel").toInt(0);
m_StartAndDetect = autosystemobj.value("StartAndDetect").toInt(0);
m_CameraTrigeType = autosystemobj.value("CameraTrigerType").toInt(0);
m_showThressValue = autosystemobj.value("showThressValue").toInt(0);
m_showThressList = autosystemobj.value("showThressList").toInt(0);
}
else
{
m_AutoSendTick2COM = 1;
m_AutoSendTick2Net = 1;
m_SendChannelRes2COM = 1;
m_SendChannelRes2Net = 1;
m_SendDetectStr2Net = 1;
m_IsUseRaster = 1;
m_SaveD2HCsv = 0;
m_IsUseChannel = 0;
m_StartAndDetect = 1;
m_CameraTrigeType = 1;
}
QJsonObject m_plcparaobj = jsMyself.value(WHEEL_SELFDEFINE_PLCPARA).toObject();
if (!m_plcparaobj.isEmpty())
{
m_PLC_TrigerFilter = m_plcparaobj.value("TrigerFilter").toInt(1);
m_PLC_CamTrigDelay = m_plcparaobj.value("CamTrigDelay").toInt(1);
m_PLC_CamTrigPulse = m_plcparaobj.value("CamTrigPulse").toInt(1);
m_PLC_LightDelay = m_plcparaobj.value("LightDelay").toInt(1);
m_PLC_TrigerType = m_plcparaobj.value("TrigerType").toInt(0);
m_PLC_ResHoldTime = m_plcparaobj.value("ResHoldTime").toInt(1500);
m_PLC_RestartSeverCount = m_plcparaobj.value("TimeOutCount").toInt(10);//超时多少次重启服务器
m_PLC_ShowTimerOutMsg = m_plcparaobj.value("ShowTimeOutMsg").toInt(0);//超时时显示
m_PLC_IsResServer = m_plcparaobj.value("IsRestartServer").toInt(0);//是否超时时自动重启服务器
m_PLC_SaveMsgInLog = m_plcparaobj.value("IsSaveMsgInlog").toInt(0);//是否保存数据到系统日志
}
else
{
m_PLC_TrigerFilter = 1;
m_PLC_CamTrigDelay = 1;
m_PLC_CamTrigPulse = 1;
m_PLC_LightDelay = 1;
m_PLC_TrigerType = 1;
m_PLC_ResHoldTime = 1500;
m_PLC_RestartSeverCount = 10;
m_PLC_ShowTimerOutMsg = 0;
m_PLC_IsResServer = 0;
m_PLC_SaveMsgInLog = 0;
}
QJsonObject VirtualObj = jsMyself.value("DetectModl").toObject();
if (!VirtualObj.isEmpty())
{
m_Virtual_Camera = VirtualObj.value("Virsual_Camera").toInt();
m_Visural_Time = VirtualObj.value("Virsual_Times").toInt(3000);
m_UseCutImg = VirtualObj.value("UseCutImg").toInt(0);
}
else
{
m_UseCutImg = 0;
m_Virtual_Camera = 0;
m_Visural_Time = 1000;
}
QJsonObject PLCTestObj = jsMyself.value("PLCCommunicate").toObject();
if (!PLCTestObj.isEmpty())
{
m_ThreadWaitTime = PLCTestObj.value("ThreadWaitTime").toInt(200);
m_PLC_ASK = PLCTestObj.value("NoAsk").toInt(0);
}
else
{
m_ThreadWaitTime = 200;
m_PLC_ASK = 0;
}
QJsonObject objState = jsMyself.value("detectState").toObject();
if (!objState.empty()) {
IsOnline = objState.value("isOnline").toInt();
}
objState = jsMyself.value(WHEEL_D2H_KEY).toObject();
if (!objState.empty()) {
m_k = objState.value(WHEEL_D2H_K).toDouble(m_k);
m_b = objState.value(WHEEL_D2H_B).toDouble(m_b);
}
objState = jsMyself.value("alg").toObject();
if (!objState.empty()) {
bUseThickness = objState.value("useThickness").toDouble();
bUseDiameter = objState.value("useDiameter").toDouble();
}
objState = jsMyself.value("CheckDB").toObject();
if (!objState.empty()){
m_IAutoDelCountUser = objState.value("AutoDelCountUser").toInt(100000);
m_IAutoDelCountWarn = objState.value("AutoDelCountWarn").toInt(100000);
m_IAutoDelCbx_Index = objState.value("AutoDelTime").toInt(0);
m_IAutoDel_days = objState.value("AutoDel_days").toInt(3650);
if (m_IAutoDel_days <= 0)
m_IAutoDel_days = 3650;
}
else
{
m_IAutoDelCountUser = 100000;
m_IAutoDelCountWarn = 100000;
m_IAutoDelCbx_Index = 0;
m_IAutoDel_days = 3650;
}
}
void lpGlobalConfig::loadStandParam()
{
QString fileMyself = QApplication::applicationDirPath() + "\\user\\standparam.ini";
QSettings setting(fileMyself, QSettings::IniFormat);
int p1x = setting.value("point1_X", 0).toInt();
int p1y = setting.value("point1_y", 0).toInt();
int p2x = setting.value("point2_x", 100).toInt();
int p2y = setting.value("point2_y", 100).toInt();
double scale = setting.value("scale", 1.0).toDouble();
double length = setting.value("length", 1000).toDouble();
pointXOffset = setting.value("pointXoffset", 0.0).toDouble();
pointYOffset = setting.value("pointYoffset", 0.0).toDouble();
pointCircle = setting.value("pointCircle", 20).toInt();
point1.setX(p1x);
point1.setY(p1y);
point2.setX(p2x);
point2.setY(p2y);
fScale = scale;
fLength = length;
}
void lpGlobalConfig::saveStandParam()
{
QString fileMyself = QApplication::applicationDirPath() + "\\user\\standparam.ini";
QSettings setting(fileMyself, QSettings::IniFormat);
setting.setValue("point1_X", point1.x());
setting.setValue("point1_y", point1.y());
setting.setValue("point2_x", point2.x());
setting.setValue("point2_y", point2.y());
setting.setValue("scale", fScale);
setting.setValue("length", fLength);
setting.setValue("pointXoffset", pointXOffset);
setting.setValue("pointYoffset", pointYOffset);
setting.setValue("pointCircle", pointCircle);
}
5 years ago
void lpGlobalConfig::savePLCPara()
5 years ago
{
QString fileMyself = m_applicationDirPath + WHEEL_SELFDEFINE_FILE;
QJsonObject jsMyself = QZkJsonParser::ReadJsonAuto(fileMyself);
QJsonObject m_plcparaobj;
m_plcparaobj.insert("TrigerFilter", m_PLC_TrigerFilter);
m_plcparaobj.insert("CamTrigDelay", m_PLC_CamTrigDelay);
m_plcparaobj.insert("CamTrigPulse", m_PLC_CamTrigPulse);
m_plcparaobj.insert("LightDelay", m_PLC_LightDelay);
m_plcparaobj.insert("TrigerType", m_PLC_TrigerType);
m_plcparaobj.insert("ResHoldTime", m_PLC_ResHoldTime);//PLC结果等待时间
m_plcparaobj.insert("TimeOutCount", m_PLC_RestartSeverCount);//超时多少次重启服务器
m_plcparaobj.insert("ShowTimeOutMsg", m_PLC_ShowTimerOutMsg);//超时时显示
m_plcparaobj.insert("IsRestartServer", m_PLC_IsResServer);//是否超时时自动重启服务器
m_plcparaobj.insert("IsSaveMsgInlog", m_PLC_SaveMsgInLog);//是否保存数据到系统日志
jsMyself.insert(WHEEL_SELFDEFINE_PLCPARA, m_plcparaobj);
QZkJsonParser::WriteJsonObject(fileMyself, jsMyself);
}
5 years ago
void lpGlobalConfig::saveDeteImage()
5 years ago
{
QString fileMyself = m_applicationDirPath + WHEEL_SELFDEFINE_FILE;
QJsonObject jsMyself = QZkJsonParser::ReadJsonAuto(fileMyself);
QJsonObject DetectModl;
DetectModl.insert("Virsual_Camera", m_Virtual_Camera);
DetectModl.insert("Virsual_Times", m_Visural_Time);
DetectModl.insert("UseCutImg", m_UseCutImg);
jsMyself.insert("DetectModl", DetectModl);
QJsonObject DetectImage;
DetectImage.insert("Debug", m_Debug);
5 years ago
DetectImage.insert("saveCutOKImg",bSaveCutOKImg);
DetectImage.insert("saveCutNGImg",bSaveCutNGImg);
DetectImage.insert("saveSrcNGImg",bSaveSrcNGImg);
DetectImage.insert("saveSrcOKImg",bSaveSrcOKImg);
DetectImage.insert("saveSrcNGImg_value",bSaveSrcNGImg_value);
DetectImage.insert("saveSrcOKImg_value",bSaveSrcOKImg_value);
5 years ago
DetectImage.insert("SaveImgPath",m_SaveImgDirPath);
jsMyself.insert("DetectImage", DetectImage);
QJsonObject autosystemobj;
autosystemobj.insert("AutoSendTick2COM", m_AutoSendTick2COM);
autosystemobj.insert("AutoSendTick2Net", m_AutoSendTick2Net);
autosystemobj.insert("SendChannelRes2COM", m_SendChannelRes2COM);
autosystemobj.insert("SendChannelRes2Net", m_SendChannelRes2Net);
autosystemobj.insert("SendDetectStr2Net", m_SendDetectStr2Net);
autosystemobj.insert("IsUseRaster", m_IsUseRaster);
autosystemobj.insert("SaveD2HCsv", m_SaveD2HCsv);
autosystemobj.insert("IsUseChannel", m_IsUseChannel);
autosystemobj.insert("StartAndDetect", m_StartAndDetect);
autosystemobj.insert("CameraTrigerType", m_CameraTrigeType);
//
autosystemobj.insert("showThressValue", m_showThressValue);
autosystemobj.insert("showThressList", m_showThressList);
jsMyself.insert(WHEEL_SELFDEFINE_AUTOITEM, autosystemobj);
jsMyself.insert("tcpServerPort", tcpServerPort);
jsMyself.insert("webSocketPort", webSocketPort);
jsMyself.insert("runBackRnning",bRunBackRunning);
jsMyself.insert("runBackClosing", bRunBackClosing);//关闭页面时自动后台运行
jsMyself.insert("systitle", strSysTitle);//系统标题
5 years ago
QJsonObject algObj;
algObj.insert("Threshold", algParam.m_AlgThres);
algObj.insert("RatioType", algParam.m_RatioDetectType);
algObj.insert("bEqual", algParam.m_bUseEqual);//使用使用图像增强
algObj.insert("filterSize", algParam.m_filterSize);//过滤圆大小
algObj.insert("circle_polarity", algParam.m_Circle_Polarity);
algObj.insert("circle_edgewidth", algParam.m_Circle_EdgeWidth);
algObj.insert("circle_acthres", algParam.m_Circle_ACThres);
algObj.insert("useBackground", algParam.m_UseBackground);
jsMyself.insert(WHEEL_SELFDEFINE_ALGPARA, algObj);
5 years ago
QZkJsonParser::WriteJsonObject(fileMyself, jsMyself);
}
5 years ago
void lpGlobalConfig::save()
5 years ago
{
QString fileMyself = m_applicationDirPath + WHEEL_SELFDEFINE_FILE;
QJsonObject jsMyself = QZkJsonParser::ReadJsonAuto(fileMyself);
QJsonObject objState;
objState.insert("isOnline", IsOnline);
jsMyself.insert("detectState", objState);
QJsonObject objd2h;
objd2h.insert(WHEEL_D2H_K, m_k);
objd2h.insert(WHEEL_D2H_B, m_b);
jsMyself.insert(WHEEL_D2H_KEY, objd2h);
QJsonObject objag;
if (bUseThickness)
objag.insert("useThickness",1);
else
objag.insert("useThickness", 0);
if (bUseDiameter)
objag.insert("useDiameter", 1);
else
objag.insert("useDiameter", 0);
jsMyself.insert("alg", objag);
QJsonObject objCheckDb;
objCheckDb.insert("AutoDelCountUser", m_IAutoDelCountUser);
objCheckDb.insert("AutoDelCountWarn", m_IAutoDelCountWarn);
objCheckDb.insert("AutoDelTime", m_IAutoDelCbx_Index);
objCheckDb.insert("AutoDel_days", m_IAutoDel_days);
jsMyself.insert("CheckDB", objCheckDb);
QJsonObject algObj;
algObj.insert("Threshold", algParam.m_AlgThres);
algObj.insert("RatioType", algParam.m_RatioDetectType);
algObj.insert("bEqual", algParam.m_bUseEqual);//使用使用图像增强
algObj.insert("filterSize", algParam.m_filterSize);//过滤圆大小
algObj.insert("circle_polarity", algParam.m_Circle_Polarity);
algObj.insert("circle_edgewidth", algParam.m_Circle_EdgeWidth);
algObj.insert("circle_acthres", algParam.m_Circle_ACThres);
algObj.insert("useBackground", algParam.m_UseBackground);
5 years ago
jsMyself.insert(WHEEL_SELFDEFINE_ALGPARA, algObj);
QZkJsonParser::WriteJsonObject(fileMyself, jsMyself);
}