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.
274 lines
9.5 KiB
C++
274 lines
9.5 KiB
C++
#include "DetectState.h"
|
|
#include "QZkJsonParser.h"
|
|
|
|
#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"
|
|
|
|
|
|
DetectState::DetectState()
|
|
: IsOnline(0), IsDetect(0), IsCheck(false)
|
|
{
|
|
totalDetectNum = 0;
|
|
totalUnDetectNum = 0;
|
|
|
|
m_bObjAll2A = false;
|
|
|
|
m_startDetectFlags = false;
|
|
saveGood = 0;
|
|
saveBad = 0;
|
|
m_Debug = 0;
|
|
m_k = -0.00077528844;
|
|
m_b = 0.786244571;
|
|
bUseDiameter = bUseThickness = false;
|
|
}
|
|
|
|
|
|
DetectState::~DetectState()
|
|
{
|
|
//save();
|
|
}
|
|
|
|
void DetectState::init(QString strPath)
|
|
{
|
|
m_applicationDirPath = strPath;
|
|
QString fileMyself = m_applicationDirPath + WHEEL_SELFDEFINE_FILE;
|
|
QJsonObject jsMyself = QZkJsonParser::ReadJsonAuto(fileMyself);
|
|
QJsonObject algObj = jsMyself.value(WHEEL_SELFDEFINE_ALGPARA).toObject();
|
|
if (!algObj.isEmpty())
|
|
{
|
|
m_AlgThres = algObj.value("Threshold").toInt(15);
|
|
}
|
|
else {
|
|
m_AlgThres = 15;
|
|
}
|
|
QJsonObject detectImage = jsMyself.value(WHEEL_SELFDEFINE_DETECTIMAGE).toObject();
|
|
if (!detectImage.isEmpty())
|
|
{
|
|
m_Debug = detectImage.value("Debug").toInt(1001);
|
|
saveGood = detectImage.value("Save_Good").toInt(0);
|
|
saveBad = detectImage.value("Save_Bad").toInt(0);
|
|
m_UseBackground = detectImage.value("UseBackground").toInt(0);
|
|
saveCutGood = detectImage.value("SaveCut_Good").toInt(0);
|
|
saveCutBad = detectImage.value("SaveCut_Bad").toInt(0);
|
|
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 DetectState::savePLCPara()
|
|
{
|
|
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);
|
|
}
|
|
|
|
void DetectState::saveDeteImage()
|
|
{
|
|
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);
|
|
DetectImage.insert("SaveCut_Bad", saveCutBad);
|
|
DetectImage.insert("SaveCut_Good", saveCutGood);
|
|
DetectImage.insert("Save_Bad", saveBad);
|
|
DetectImage.insert("Save_Good", saveGood);
|
|
DetectImage.insert("SaveImgPath",m_SaveImgDirPath);
|
|
DetectImage.insert("UseBackground", m_UseBackground);
|
|
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);
|
|
|
|
QZkJsonParser::WriteJsonObject(fileMyself, jsMyself);
|
|
}
|
|
|
|
void DetectState::save()
|
|
{
|
|
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", m_AlgThres);
|
|
jsMyself.insert(WHEEL_SELFDEFINE_ALGPARA, algObj);
|
|
QZkJsonParser::WriteJsonObject(fileMyself, jsMyself);
|
|
}
|