zynq_7010/sleep_processes_code/JsonConfig.cpp

162 lines
3.8 KiB
C++

#include "JsonConfig.h"
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#define SCAN_INFO_TITLE "ScanInfo"
#define SCAN_TOTAL "TotalScanned"
#define SCAN_ROLLERNUM "RollerNum"
#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"
#define SCAN_HRATIO "HRatio"
#define SCAN_VRATIO "VRatio"
#define SCAN_SLEEPTIME "SleepTime"
#define SCAN_TOKEN "ScannerToken"
#define SCAN_SPEEDMODE "SpeedMode"
#define SCAN_VID "VID"
#define SCAN_PID "PID"
#define TOKEN_DEFAULT " "
#define FWVERSION "G345230918"
#define SERIALNUM "HS6010A38001P1"
JsonConfig::JsonConfig()
{
if (access(SCANNER_SCAN_INFO_PATH, F_OK) == -1) //不存在
{
}
}
JsonConfig::JsonConfig(ConfigType type) : m_cfgType(type)
{
}
JsonConfig::~JsonConfig()
{
}
ScannerScanInfo JsonConfig::GetScanInfo()
{
ScannerScanInfo info;
if (access(SCANNER_SCAN_INFO_PATH, F_OK) != 0)
{
return info;
}
std::ifstream i(SCANNER_SCAN_INFO_PATH);
auto pos = i.tellg();
i.seekg(0, ios::end);
if(i.tellg()<=2)
{
return info;
}
json j;
i.seekg(pos);
{
std::lock_guard<std::mutex> m_c(m_lock);
i >> j;
i.close();
}
auto &jobject = j[SCAN_INFO_TITLE];
if (jobject.contains(SCAN_TOTAL))
jobject[SCAN_TOTAL].get_to(info.TotalScanned);
else
info.TotalScanned = 0;
if (jobject.contains(SCAN_ROLLERNUM))
jobject[SCAN_ROLLERNUM].get_to(info.RollerNum);
else
info.RollerNum = 0;
if (jobject.contains(SCAN_CUONUM))
jobject[SCAN_CUONUM].get_to(info.CuoNum);
else
info.CuoNum = 0;
if (jobject.contains(SCAN_JAMINNUM))
jobject[SCAN_JAMINNUM].get_to(info.JamInNum);
else
info.JamInNum = 0;
if (jobject.contains(SCAN_JAMOUTNUM))
jobject[SCAN_JAMOUTNUM].get_to(info.JamOutNum);
else
info.JamOutNum = 0;
if (jobject.contains(SCAN_DOUNUM))
jobject[SCAN_DOUNUM].get_to(info.DoubleNum);
else
info.DoubleNum = 0;
if (jobject.contains(SCAN_ERRORNUM))
jobject[SCAN_ERRORNUM].get_to(info.ErrorNum);
else
info.ErrorNum = 0;
if (jobject.contains(SCAN_SERIALNUM))
jobject[SCAN_SERIALNUM].get_to(info.SerialNum);
else
info.SerialNum = SERIALNUM;
if (jobject.contains(SCAN_FWVERSION))
jobject[SCAN_FWVERSION].get_to(info.FWVersion);
if (jobject.contains(SCAN_HRATIO))
jobject[SCAN_HRATIO].get_to(info.HRatio);
else
info.HRatio = 1065353216;//默认 1.0f
if (jobject.contains(SCAN_VRATIO))
jobject[SCAN_VRATIO].get_to(info.VRatio);
else
info.VRatio = 1065353216;//默认 1.0f
if (jobject.contains(SCAN_SLEEPTIME))
jobject[SCAN_SLEEPTIME].get_to(info.SleepTime);
else
info.SleepTime = 3600;//默认 1.0f
if(jobject.contains(SCAN_TOKEN))
jobject[SCAN_TOKEN].get_to(info.Token);
else
{
info.Token=TOKEN_DEFAULT;
}
if(jobject.contains(SCAN_SPEEDMODE))
jobject[SCAN_SPEEDMODE].get_to(info.SpeedMode);
else
{
info.SpeedMode = 4;
}
if(jobject.contains(SCAN_VID))
jobject[SCAN_VID].get_to(info.VID);
else
{
info.VID = 0x3072;
}
if(jobject.contains(SCAN_PID))
jobject[SCAN_PID].get_to(info.PID);
else
{
#ifdef G400
info.PID = 0x0400;
#else
info.PID = 0x0300;
#endif
}
return info;
}