#include "stdafx.h" #include "DetectorConfiguration.h" #include "Detector_Model_Def.h" #include "common_api.h" DetectorConfiguration::DetectorConfiguration(string ConfigPath) { m_strConfigPath = ConfigPath; } DetectorConfiguration::~DetectorConfiguration() { } bool DetectorConfiguration::LoadConfigurations(DeviceIndexStruct& DeviceConf, ResDataObject& CalibDoseList, int& nCalibTotalExpNum) { if (!m_ConfigAll.loadFile(m_strConfigPath.c_str())) { printf("Load configuration file failed!!! \n"); FERROR("load {$} fail!", m_strConfigPath); return false; } try { m_Configurations = m_ConfigAll["CONFIGURATION"]; TransferModuleJosnConfig2DriverConfig(m_Configurations); //FINFO("m_Configurations:{$}", m_Configurations.encode()); DeviceConf.strDeviceName = (string)m_Configurations[DetectorDescription]; DeviceConf.strPanelSerial = (string)m_Configurations[DetectorSerialNumber]; DeviceConf.nNotifyStatusTimePeriod = (int)m_Configurations["NotifyStatusTimePeriod"]; DeviceConf.nReconnectTimePeriod = (int)m_Configurations["ReConnectTimePeriod"]; int nTemp = (int)m_Configurations["SupportDDR"]; if (nTemp == 1) { DeviceConf.bSupportDDR = true; } else { DeviceConf.bSupportDDR = false; } //增加温度电量wifi警告和阈值的读取 DeviceConf.fTemperatureErrorMax = (float)m_Configurations["TempMaxLimit"]; DeviceConf.fTemperatureWarnMax = (float)m_Configurations["TempUpperLimit"]; DeviceConf.fTemperatureWarnMin = (float)m_Configurations["TempLowerLimit"]; DeviceConf.fTemperatureErrorMin = (float)m_Configurations["TempMinLimit"]; 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"]; FINFO("DeviceConf.strSupportSyncMode:{$},CalibMode:{$}", DeviceConf.strSupportSyncMode, DeviceConf.nCalibMode); int maxImageSize = 0; int nModeCount = (int)m_Configurations["ModeTable"].size(); //FINFO("nModeCount:{$},ModeTable:{$}", nModeCount, m_Configurations["ModeTable"].encode()); for (int i = 0; i < nModeCount; i++) { //FINFO("ModeTable[{$}]:{$}", i, m_Configurations["ModeTable"][i].encode()); DeviceConf.nRawWidth = m_Configurations["ModeTable"][i]["RawImgWidth"]; DeviceConf.nRawHeight = m_Configurations["ModeTable"][i]["RawImgHeight"]; if (DeviceConf.nRawWidth * DeviceConf.nRawHeight > maxImageSize) { maxImageSize = DeviceConf.nRawWidth * DeviceConf.nRawHeight; DeviceConf.nMaxImgWidth = DeviceConf.nRawWidth; DeviceConf.nMaxImgHeight = DeviceConf.nRawHeight; } } FINFO("DeviceConf.nMaxImageWidth:{$},DeviceConf.nMaxImageHeight:{$}", DeviceConf.nMaxImgWidth, DeviceConf.nMaxImgHeight); 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 (ResDataObjectExption &e) { printf("Get config error: %s \r\n", e.what()); FERROR("Get config error: {$}", e.what()); return false; } return true; } bool DetectorConfiguration::SaveConfig() { try { m_ConfigAll["CONFIGURATION"] = m_Configurations; } catch (...) { return false; } return m_ConfigAll.SaveFile((m_strConfigPath).c_str()); } bool DetectorConfiguration::LoadCalibrationDose(string& strWorkPath, ResDataObject& CalibDoseList, int& nCalibTotalExpNum) { ResDataObject RdoCalibDoseList; try { string strCalibDosePath = strWorkPath + (string)m_Configurations["CalibrationDosePath"] + "\\CalibrationDose_CareRay.xml"; FINFO("start load calibDose file: {$}", strCalibDosePath); struct stat buffer; if (stat(strCalibDosePath.c_str(), &buffer) == 0) { RdoCalibDoseList.loadFile(strCalibDosePath.c_str()); CalibDoseList = RdoCalibDoseList["List"]; FINFO("CalibDoseList: {$} ", CalibDoseList.encode()); for (int i = 0; i < CalibDoseList.size(); i++) { ResDataObject temp = CalibDoseList[i]; int nExpNum = temp["ExpNum"]; nCalibTotalExpNum += nExpNum; //FINFO("temp: {$} ", temp.encode()); } } else { FERROR("{$} file not exist!", strCalibDosePath); return false; } } catch (exception e) { FERROR("Get calibDose error: {$}", e.what()); return false; } return true; }