#include "stdafx.h" #include "DetectorConfiguration.h" #include "Detector_Model_Def.h" #include "common_api.h" DetectorConfiguration::DetectorConfiguration(string ConfigPath) : m_strConfigPath(ConfigPath) , m_nDetModeNum(0) , m_pDetModeList(nullptr) { } DetectorConfiguration::~DetectorConfiguration() { if (m_pDetModeList) { delete[] m_pDetModeList; m_pDetModeList = nullptr; } } bool DetectorConfiguration::LoadConfigurations(DeviceIndexStruct & DeviceConf) { if (!m_ConfigAll.loadFile((m_strConfigPath).c_str())) { printf( "Load configuration file failed!!! \n"); return false; } try { m_Configurations = m_ConfigAll["CONFIGURATION"]; //printf("m_Configurations:\n %s\n", m_Configurations.encode()); if (m_strConfigPath.find(".json") != std::string::npos) { TransferModuleJosnConfig2DriverConfig(m_Configurations); m_nDetModeNum = (int)m_Configurations["ModeTable"].size(); } else if (m_strConfigPath.find(".xml") != std::string::npos) { m_nDetModeNum = (int)m_Configurations["ModeTable"].GetKeyCount("DetectorMode"); } //解析config DeviceConf.strDeviceName = (string)m_Configurations["Description"]; DeviceConf.strPanelSerial = (string)m_Configurations["SerialNumber"]; DeviceConf.strDetectorModel = (string)m_Configurations["DetectorModel"]; printf("\n DetectorMode number: %d \n", m_nDetModeNum); m_pDetModeList = new DetModeInfo[m_nDetModeNum]; for (int i = 0; i < m_nDetModeNum; i++) { m_pDetModeList[i].nLogicMode = (int)m_Configurations["ModeTable"][i]["LogicMode"]; m_pDetModeList[i].strExamType = (string)m_Configurations["ModeTable"][i]["ExamType"]; m_pDetModeList[i].nOperationMode = (int)m_Configurations["ModeTable"][i]["OperationMode"]; m_pDetModeList[i].nRawImgWidth = (int)m_Configurations["ModeTable"][i]["RawImgWidth"]; m_pDetModeList[i].nRawImgHeight = (int)m_Configurations["ModeTable"][i]["RawImgHeight"]; m_pDetModeList[i].nImageWidth = (int)m_Configurations["ModeTable"][i]["ImageWidth"]; m_pDetModeList[i].nImageHeight = (int)m_Configurations["ModeTable"][i]["ImageHeight"]; m_pDetModeList[i].nPhySizeInfoBit = (int)m_Configurations["ModeTable"][i]["PhySizeInfoBit"]; m_pDetModeList[i].nImageLeftOffset = (int)m_Configurations["ModeTable"][i]["LeftOffset"]; m_pDetModeList[i].nImageTopOffset = (int)m_Configurations["ModeTable"][i]["TopOffset"]; m_pDetModeList[i].nImageRightOffset = (int)m_Configurations["ModeTable"][i]["RightOffset"]; m_pDetModeList[i].nImageBottomOffset = (int)m_Configurations["ModeTable"][i]["BottomOffset"]; m_pDetModeList[i].nPixelPitch = (int)m_Configurations["ModeTable"][i]["PixelPitch"]; m_pDetModeList[i].bPreviewEnable = ((int)m_Configurations["ModeTable"][i]["PreviewEnable"] != 0) ? true : false; m_pDetModeList[i].nPreviewWidth = (int)m_Configurations["ModeTable"][i]["PreviewWidth"]; m_pDetModeList[i].nPreviewHeight = (int)m_Configurations["ModeTable"][i]["PreviewHeight"]; m_pDetModeList[i].nSyncType = (int)m_Configurations["ModeTable"][i]["SyncType"]; m_pDetModeList[i].nCorrectionType = (int)m_Configurations["ModeTable"][i]["CorrectionType"]; m_pDetModeList[i].nBinningMode = (int)m_Configurations["ModeTable"][i]["BinningMode"]; m_pDetModeList[i].nZoomMode = (int)m_Configurations["ModeTable"][i]["ZoomMode"]; m_pDetModeList[i].nGainValue = (int)m_Configurations["ModeTable"][i]["GainValue"]; m_pDetModeList[i].nFrequency = (int)m_Configurations["ModeTable"][i]["Frequency"]; m_pDetModeList[i].nXwindow = (int)m_Configurations["ModeTable"][i]["Xwindow"]; m_pDetModeList[i].nReadoutTime = (int)m_Configurations["ModeTable"][i]["ReadoutTime"]; m_pDetModeList[i].nFrameCount = (int)m_Configurations["ModeTable"][i]["FrameCount"]; m_pDetModeList[i].nTriggerType = (int)m_Configurations["ModeTable"][i]["TriggerType"]; m_pDetModeList[i].nWorkStation = (int)m_Configurations["ModeTable"][i]["WorkStation"]; m_pDetModeList[i].nSensitivity = (int)m_Configurations["ModeTable"][i]["Sensitivity"]; m_pDetModeList[i].nExiThreshold = (int)m_Configurations["ModeTable"][i]["ExiThreshold"]; m_pDetModeList[i].nRotateAngle = (int)m_Configurations["ModeTable"][i]["RotateAngle"]; m_pDetModeList[i].bOffsetEnable = ((int)m_Configurations["ModeTable"][i]["OffsetEnable"] != 0) ? true : false; m_pDetModeList[i].bSaveRawEnable = ((int)m_Configurations["ModeTable"][i]["SaveRawEnable"] != 0) ? true : false; } DeviceConf.AcqModeInfo = m_pDetModeList[0]; //默认取第一个 //connections DeviceConf.strIPAddress = (string)m_Configurations["DetectorWiredIP"]; DeviceConf.strWiredIP = (string)m_Configurations["DetectorWiredIP"]; DeviceConf.strWirelessIP = (string)m_Configurations["DetectorWirelessIP"]; DeviceConf.strLocalIP = (string)m_Configurations["LocalIP"]; DeviceConf.nOffsetMode = (int)m_Configurations["OffsetMode"]; DeviceConf.nDoseOfEXI = (int)m_Configurations["Sensitivity"]; DeviceConf.nWorkstation = (int)m_Configurations["WorkStation"]; DeviceConf.nSaturationValue = (int)m_Configurations["SaturationValue"]; DeviceConf.nCalibDueSetting = (int)m_Configurations["CalibrationDue"]; DeviceConf.nSaveRaw = (int)m_Configurations["IsSaveRaw"]; DeviceConf.bTemperatureEnable = ((int)m_Configurations["TemperatureEnable"] != 0) ? true : false; DeviceConf.fTemperMaxLimit = (float)m_Configurations["TempMaxLimit"]; DeviceConf.fTemperUpLimit = (float)m_Configurations["TempUpperLimit"]; DeviceConf.fTemperLowLimit = (float)m_Configurations["TempLowerLimit"]; DeviceConf.fTemperMinLimit = (float)m_Configurations["TempMinLimit"]; DeviceConf.fCalibTemperUp = (float)m_Configurations["CalibTemperUp"]; DeviceConf.fCalibTemperLow = (float)m_Configurations["CalibTemperLow"]; DeviceConf.bBatteryEnable = ((int)m_Configurations["BatteryEnable"] != 0) ? true : false; DeviceConf.nBatteryWarning = (int)m_Configurations["BatLowerLimit"]; DeviceConf.nBatteryLimit = (int)m_Configurations["BatMiniLimit"]; DeviceConf.bWifiEnable = ((int)m_Configurations["WifiEnable"] != 0) ? true : false; DeviceConf.nWifiWarning = (int)m_Configurations["WifiLowerLimit"]; DeviceConf.nWifiLimit = (int)m_Configurations["WifiMiniLimit"]; } 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()); } /*** * 根据nMode,获取对应的ModeInfo * nMode: 采集模式 ***/ bool DetectorConfiguration::GetDetModeInfo(int nMode, DetModeInfo& AcqModeInfo) { bool bFind = false; for (int i = 0; i < m_nDetModeNum; i++) { DetModeInfo stTemp = m_pDetModeList[i]; if (nMode == stTemp.nLogicMode) { AcqModeInfo = m_pDetModeList[i]; bFind = true; break; } } return bFind; }