#include "stdafx.h" #include "DetectorConfiguration.h" #include "Detector_Model_Def.h" DetectorConfiguration::DetectorConfiguration(string ConfigPath) { m_strConfigPath = ConfigPath; } DetectorConfiguration::~DetectorConfiguration() { } void TransferModuleJosnConfig2DriverConfig(ResDataObject& config) { for (int x = 0; x < config.size(); x++) { //如果有Value if (config[x].GetKeyCount("Value") > 0) { if (config[x]["Value"].size() <= 0) { string va = (const char*)config[x]["Value"]; config[x] = va.c_str(); } else { ResDataObject rest = config[x]["Value"]; config[x] = rest; } } } } bool DetectorConfiguration::LoadConfigurations(DeviceIndexStruct& DeviceConf, ResDataObject& CalibDoseList, int& nCalibTotalExpNum) { //mLog::FINFO("LoadConfigurations {$}", m_strConfigPath.c_str()); if (!m_ConfigAll.loadFile(m_strConfigPath.c_str())) { //mLog::FINFO("Load Configuration File Failed!!!"); return false; } try { m_Configurations = m_ConfigAll["CONFIGURATION"]; if (m_strConfigPath.find(".json") != std::string::npos) { TransferModuleJosnConfig2DriverConfig(m_Configurations); } //解析config DeviceConf.strDeviceName = (string)m_Configurations["Description"]; DeviceConf.strPanelSerial = (string)m_Configurations["SerialNumber"]; DeviceConf.nRawWidth = m_Configurations["ModeTable"][0]["RawImgWidth"]; DeviceConf.nRawHeight = m_Configurations["ModeTable"][0]["RawImgHeight"]; //曝光窗口 DeviceConf.nExpWindowMode = (int)m_Configurations["ExpWindowMode"]; string strXWindowMode = "XWindow" + std::to_string(DeviceConf.nExpWindowMode); DeviceConf.nXWindow = (int)m_Configurations["ExpWindow"][strXWindowMode.c_str()]; DeviceConf.nBatteryWarning = (int)m_Configurations["BatLowerLimit"]; DeviceConf.nBatteryLimit = (int)m_Configurations["BatMiniLimit"]; DeviceConf.nWifiWarning = (int)m_Configurations["WifiLowerLimit"]; DeviceConf.nWifiLimit = (int)m_Configurations["WifiMiniLimit"]; DeviceConf.strSupportSyncMode = m_Configurations["SupportSyncMode"].encode(); DeviceConf.nCalibMode = (int)m_Configurations["CalibMode"]; //mLog::FINFO("DeviceConf.strSupportSyncMode:{$},CalibMode:{$}", DeviceConf.strSupportSyncMode, DeviceConf.nCalibMode); int nDoseList = (int)m_Configurations["CalibrationConfig"].size(); for (int i = 0; i < nDoseList; i++) { ResDataObject temp; temp.add("TargetGainEXI", m_Configurations["CalibrationConfig"][i]["TargetGainEXI"]); temp.add("KV", m_Configurations["CalibrationConfig"][i]["KV"]); temp.add("MA", m_Configurations["CalibrationConfig"][i]["MA"]); temp.add("MS", m_Configurations["CalibrationConfig"][i]["MS"]); temp.add("MAS", m_Configurations["CalibrationConfig"][i]["MAS"]); temp.add("ExpNum", m_Configurations["CalibrationConfig"][i]["ExpNum"]); CalibDoseList.add("Dose", temp); nCalibTotalExpNum += (int)m_Configurations["CalibrationConfig"][i]["ExpNum"]; } } catch (...) { printf("Load configuration item failed, exception!!!"); return false; } return true; } bool DetectorConfiguration::SaveConfig() { try { m_ConfigAll["CONFIGURATION"] = m_Configurations; } catch (...) { return false; } return m_ConfigAll.SaveFile((m_strConfigPath).c_str()); }