#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 & ACQMODElist) { if (!m_ConfigAll.loadFile((m_strConfigPath).c_str())) { printf( "Load configuration file failed!!! \n"); return false; } try { m_Configurations = m_ConfigAll["CONFIGURATION"]; TransferModuleJosnConfig2DriverConfig(m_Configurations); //解析config int nAcqMode = 1; char sstream[10] = { 0 }; //用于转换值 DeviceConf.strDeviceName = (string)m_Configurations[DetectorDescription]; DeviceConf.strPanelSerial = (string)m_Configurations[DetectorSerialNumber]; int nModeCount = (int)m_Configurations["ModeTable"].size(); for (int i = 0; i < nModeCount; i++) { ResDataObject mode; int temp = (int)m_Configurations["ModeTable"][i]["LogicMode"]; mode.add(CcosAcqModeIdx, temp); temp = (int)m_Configurations["ModeTable"][i]["RawImgWidth"]; mode.add(RawImgWidth, temp); temp = (int)m_Configurations["ModeTable"][i]["RawImgHeight"]; mode.add(RawImgHeight, temp); temp = (int)m_Configurations["ModeTable"][i]["WidthOffset"]; mode.add(WidthOffset, temp); temp = (int)m_Configurations["ModeTable"][i]["HeightOffset"]; mode.add(HeightOffset, temp); temp = (int)m_Configurations["ModeTable"][i]["ImageWidth"]; mode.add(CcosImageWidth, temp); temp = (int)m_Configurations["ModeTable"][i]["ImageHeight"]; mode.add(CcosImageHeight, temp); temp = (int)m_Configurations["ModeTable"][i]["PhySizeInfoBit"]; mode.add(CcosImageBits, temp); temp = (int)m_Configurations["ModeTable"][i]["GainValue"]; mode.add(CcosGainTitle, temp); temp = (int)m_Configurations["ModeTable"][i]["SendImageInterval"]; mode.add("SendImageInterval", temp); temp = (int)m_Configurations["ModeTable"][i]["PixelPitch"]; mode.add(CcosImagePixelSpacing, temp); temp = (int)m_Configurations["ModeTable"][i]["Sensitivity"]; mode.add(CcosImageFPDSensitivity, temp); temp = (int)m_Configurations["ModeTable"][i]["PreviewEnable"]; mode.add("PreviewEnable", temp); temp = (int)m_Configurations["ModeTable"][i]["PreviewWidth"]; mode.add("PreviewWidth", temp); temp = (int)m_Configurations["ModeTable"][i]["PreviewHeight"]; mode.add("PreviewHeight", temp); temp = (int)m_Configurations["ModeTable"][i]["Frequency"]; mode.add(CcosFrameRate, temp); temp = (int)m_Configurations["ModeTable"][i]["FrameCount"]; if (temp == 0) { mode.add(CcosLoopCount, (DWORD)INFINITE);//不限出图张数,由上层停止采集 } else { mode.add(CcosLoopCount, temp); } snprintf(sstream, sizeof(sstream), "%d", nAcqMode); ACQMODElist.add(sstream, mode); nAcqMode++; } } catch (...) { return false; } return true; } bool DetectorConfiguration::SaveConfig() { try { m_ConfigAll["CONFIGURATION"] = m_Configurations; } catch (...) { return false; } return m_ConfigAll.SaveFile((m_strConfigPath).c_str()); }