huago-corrcet_tools/HuaGoCorrect/JsonConfig.cpp

107 lines
3.3 KiB
C++

#include "stdafx.h"
#include "JsonConfig.h"
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#ifdef WIN32
#include <corecrt_io.h>
#else
#include <unistd.h>
#endif
#define JSON_FILE "config.json"
#define SCAN_INFO_TITLE "ScanInfo"
#define SCAN_TOTAL "TotalScanned"
#define SCAN_CUONUM "CuoNum"
#define SCAN_JAMINNUM "JamInNum"
#define SCAN_JAMOUTNUM "JamOutNum"
#define SCAN_DOUNUM "DoubleNum"
#define SCAN_ERRORNUM "ErrorNum"
#define SCAN_SERIALNUM "SerialNum"
#define SCAN_FWVERSION "FWVersion"
JsonConfig::JsonConfig()
{
//if (access(SCANNER_SCAN_INFO_PATH, F_OK) == -1) //不存在
//{
// ScannerScanInfo defaultinfo = CreateDefaultScanInfo();
// SaveScanInfo(defaultinfo);
//}
}
JsonConfig::JsonConfig(ConfigType type) : m_cfgType(type)
{
}
JsonConfig::~JsonConfig()
{
}
bool JsonConfig::ReadParam(CaptureParams& param)
{
if(_access(JSON_FILE,0)!=0)
{
CaptureParams t_param = { 0 };
CreateDefault(t_param);
WriteParam(t_param);
param = t_param;
return false;
}
std::ifstream i(JSON_FILE);
json j;
i >> j;
auto &jobject = j["Config"];
jobject["CorrectColorExposure"].get_to(param.correctColorExposure);
jobject["CorrectColorGain"].get_to(param.correctColorGain);
jobject["CorrectColorOffset"].get_to(param.correctColorOffset);
jobject["ColorExposure"].get_to(param.colorExposure);
jobject["ColorGain"].get_to(param.colorGain);
jobject["ColorOffset"].get_to(param.colorOffset);
jobject["CorrectGrayExposure"].get_to(param.correctGrayExposure);
jobject["CorrectGrayGain"].get_to(param.correctGrayGain);
jobject["CorrectGrayOffset"].get_to(param.correctGrayOffset);
jobject["GrayExposure"].get_to(param.grayExposure);
jobject["GrayGain"].get_to(param.grayGain);
jobject["GrayOffset"].get_to(param.grayOffset);
return true;
}
void JsonConfig::WriteParam(CaptureParams& t_param)
{
json m_json;
auto &jobject = m_json["Config"];
jobject["CorrectColorExposure"] = t_param.correctColorExposure;
jobject["CorrectColorGain"] = t_param.correctColorGain;
jobject["CorrectColorOffset"] = t_param.correctColorOffset;
jobject["ColorExposure"] = t_param.colorExposure;
jobject["ColorGain"] = t_param.colorGain;
jobject["ColorOffset"] = t_param.colorOffset;
jobject["CorrectGrayExposure"] = t_param.correctGrayExposure;
jobject["CorrectGrayGain"] = t_param.correctGrayGain;
jobject["CorrectGrayOffset"] = t_param.correctGrayOffset;
jobject["GrayExposure"] = t_param.grayExposure;
jobject["GrayGain"] = t_param.grayGain;
jobject["GrayOffset"] = t_param.grayOffset;
std::ofstream o(JSON_FILE);
o << std::setw(4) << m_json << std::endl;
}
void JsonConfig::CreateDefault(CaptureParams& param)
{
for (size_t i = 0; i <6; i++)
{
param.colorExposure[i] = 259;
param.correctColorExposure[i] = 238;
param.correctGrayExposure[i] = 259;
param.grayExposure[i] = 238;
}
for (size_t i = 0; i <12; i++)
{
param.correctGrayGain[i] = param.grayGain[i] = 47;
param.colorGain[i] = param.correctColorGain[i] = 30;
param.correctColorOffset[i] = param.correctGrayOffset[i] = 119;
param.colorOffset[i] = param.grayOffset[i] = 119;
}
}