#include "JsonConfig.h" #include #include #include #include #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 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; }