#include "stdafx.h" #include "GrindProcess.h" #include "BlSideData.h" #include "VisionRecipe.h" #include "FileRecipe.h" CGrindProcess::CGrindProcess() { /* code */ m_eDir = DIMENSION_NONE; for (int i = 0; i < 50; i++) { m_dots[i] = new CGrindDotProcess(m_eDir, i + 1); } m_isUse = false; m_nLeftLineDist = 0; m_nLeftThres = 20; } CGrindProcess::CGrindProcess(DimensionDir eDir) { /* code */ m_eDir = eDir; m_isUse = false; m_nLeftLineDist = 0; m_nLeftThres = 20; for (int i = 0; i < 50; i++) { m_dots[i] = new CGrindDotProcess(m_eDir, i + 1); } } CGrindProcess::~CGrindProcess() { /* code */ for (int i = 0; i < 50; i++) { CGrindDotProcess *dot = m_dots[i]; if (NULL == dot) continue; delete dot; dot = NULL; m_dots[i] = NULL; } } void CGrindProcess::Execute(DimensionDir eDir) { /* code */ if (!m_isUse) return; MeasureInfo m_info; m_info.idxRefer = 10; m_info.modePoint = 0; m_info.modeNear = 0; m_info.typePoint = 0; m_info.pointThres = 15; m_info.nearThres = 30; Point2I offset; for (int i = 0; i < 50; i++) { CGrindDotProcess *dot = m_dots[i]; if (NULL == dot) continue; if (1 != dot->m_nUse) continue; offset.x = i; offset.y = i; dot->setLeftLine(m_nLeftLineDist, m_nLeftThres); dot->Execute(m_eDir, offset); } } Json::Value CGrindProcess::WriteToJson(void) { /* code */ Json::Value jsValue; jsValue["type"] = GRIND_VISION_PROCESS; jsValue["side"] = (int)(m_eDir); jsValue["use"] = m_isUse; jsValue["toMark"] = m_nLeftLineDist; jsValue["leftThres"] = m_nLeftThres; for (int i = 0; i < 50; i++) { std::string name = ClsVision::FormatString("Dot%d", i); jsValue[name.c_str()] = m_dots[i]->WriteToJson(); } return jsValue; } void CGrindProcess::DecodeJson(Json::Value &jsValue) { /* code */ int num = (int)jsValue.size(); if (num < 1) return; //1. Side std::string strName = "side"; if (jsValue.isMember(strName.c_str()) && jsValue[strName.c_str()].isInt()) { m_eDir = (DimensionDir)(jsValue[strName.c_str()].asInt()); } //2. use strName = "use"; if (jsValue.isMember(strName.c_str()) && jsValue[strName.c_str()].isBool()) { m_isUse = jsValue[strName.c_str()].asBool(); } //3. idxRefer strName = "toMark"; if (jsValue.isMember(strName.c_str()) && jsValue[strName.c_str()].isInt()) { m_nLeftLineDist = jsValue[strName.c_str()].asInt(); } //4. typePoint strName = "leftThres"; if (jsValue.isMember(strName.c_str()) && jsValue[strName.c_str()].isInt()) { m_nLeftThres = jsValue[strName.c_str()].asInt(); } for (int i = 0; i < 50; i++) { std::string name = ClsVision::FormatString("Dot%d", i); if (jsValue.isMember(name.c_str()) && jsValue[name.c_str()].isObject()) { Json::Value jsData = jsValue[name.c_str()]; m_dots[i]->DecodeJson(jsData); } } }