123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- #include "stdafx.h"
- #include "CCOS.Dev.FPDDeviceMould.hpp"
- #include "DetectorConfiguration.h"
- #include "Detector_Model_Def.h"
- #include "common_api.h"
- #include "CCOSConfigurations.h"
- namespace nsFPD = CCOS::Dev::Detail::Detector;
- extern Log4CPP::Logger* gLogger;
- nsFPD::DetectorConfiguration::DetectorConfiguration(string ConfigPath)
- : m_strConfigPath(ConfigPath)
- , m_nDetModeNum(0)
- , m_pDetModeList(nullptr)
- {
- }
- nsFPD::DetectorConfiguration::~DetectorConfiguration()
- {
- if (m_pDetModeList)
- {
- delete[] m_pDetModeList;
- m_pDetModeList = nullptr;
- }
- }
- bool nsFPD::DetectorConfiguration::LoadConfigurations(DeviceIndexStruct & DeviceConf)
- {
-
- Info("Input the ConfigPath: {$}", m_strConfigPath);
- 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);
- auto Child_table = m_Configurations[NODE_ModeTable];
- m_nDetModeNum = (int)Child_table.size();
- if (m_nDetModeNum > 0)
- {
- m_pDetModeList = new DetModeInfo[m_nDetModeNum];
- }
- for (int i = 0; i < m_nDetModeNum; i++)
- {
- //加载所有modeinfo到结构体
- m_pDetModeList[i].nLogicMode = (int)Child_table[i]["LogicMode"];
- m_pDetModeList[i].strExamType = (string)Child_table[i]["ExamType"];
- m_pDetModeList[i].nImageWidth = (int)Child_table[i]["ImageWidth"];
- m_pDetModeList[i].nImageHeight = (int)Child_table[i]["ImageHeight"];
- m_pDetModeList[i].nWidthOffset = (int)Child_table[i]["WidthOffset"];
- m_pDetModeList[i].nHeightOffset = (int)Child_table[i]["HeightOffset"];
- m_pDetModeList[i].nRawImgWidth = (int)Child_table[i]["RawImgWidth"];
- m_pDetModeList[i].nRawImgHeight = (int)Child_table[i]["RawImgHeight"];
- m_pDetModeList[i].nPhySizeInfoBit = (int)Child_table[i]["PhySizeInfoBit"];
- m_pDetModeList[i].nSensitivity = (int)Child_table[i]["Sensitivity"];
- m_pDetModeList[i].bPreviewEnable = ((int)Child_table[i]["PreviewEnable"] == 1) ? true : false;
- m_pDetModeList[i].nPreviewWidth = (int)Child_table[i]["PreviewWidth"];
- m_pDetModeList[i].nPreviewHeight = (int)Child_table[i]["PreviewHeight"];
- m_pDetModeList[i].nPixelPitch = (int)Child_table[i]["PixelPitch"];
- m_pDetModeList[i].nSyncType = (int)Child_table[i]["SyncType"];
- m_pDetModeList[i].nXwindow = (int)Child_table[i]["XwindowSize"];
- m_pDetModeList[i].bIsSaveRaw = ((int)Child_table[i]["IsSaveRaw"] == 1) ? true : false;
- m_pDetModeList[i].nRotateAngle = (int)Child_table[i]["RotateAngle"];
- m_pDetModeList[i].nBinningDx = (int)Child_table[i]["BinningX"];
- m_pDetModeList[i].nBinningDy = (int)Child_table[i]["BinningY"];
- m_pDetModeList[i].nGainValue = (int)Child_table[i]["GainValue"];
- m_pDetModeList[i].nFrequency = (int)Child_table[i]["Frequency"];
- m_pDetModeList[i].nFrameCount = (int)Child_table[i]["FrameCount"];
- m_pDetModeList[i].nWorkStation = (int)Child_table[i]["WorkStation"];
- m_pDetModeList[i].nOperationMode = (int)Child_table[i]["OperationMode"];
- m_pDetModeList[i].nExpTime = (int)Child_table[i]["ExpTime"];
- m_pDetModeList[i].nTriggerType = (int)Child_table[i]["TriggerType"];
- m_pDetModeList[i].nExiThreshold = (int)Child_table[i]["ExiThreshold"];
- //获取所有模式中最大图像尺寸,用于申请共享内存
- if (m_pDetModeList[i].nRawImgWidth * m_pDetModeList[i].nRawImgHeight > DeviceConf.nMaxImgWidth * DeviceConf.nMaxImgHeight)
- {
- DeviceConf.nMaxImgWidth = m_pDetModeList[i].nRawImgWidth;
- DeviceConf.nMaxImgHeight = m_pDetModeList[i].nRawImgHeight;
- }
- } //end for
- DeviceConf.AcqModeInfo = m_pDetModeList[0]; //默认取第一个
- DeviceConf.strDeviceName = (string)m_Configurations[DetectorDescription];
- DeviceConf.fTemperMaxLimit = (float)m_Configurations[ConfKey::CcosTempMaxLimit];
- DeviceConf.fTemperMaxWarn = (float)m_Configurations[ConfKey::CcosTempUpperLimit];
- DeviceConf.fTemperLowLimit = (float)m_Configurations[ConfKey::CcosTempLowerLimit];
- DeviceConf.fTemperMinWarn = (float)m_Configurations[ConfKey::CcosTempMinLimit];
- DeviceConf.nBatteryWarning = (int)m_Configurations[ConfKey::CcosBatLowerLimit];
- DeviceConf.nBatteryLimit = (int)m_Configurations[ConfKey::CcosBatMiniLimit];
- DeviceConf.nWifiWarning = (int)m_Configurations[ConfKey::CcosWifiLowerLimit];
- DeviceConf.nWifiLimit = (int)m_Configurations[ConfKey::CcosWifiMiniLimit];
- DeviceConf.strCalibrationDate = (string)m_Configurations["DateofLastDetectorCalibration"];
- DeviceConf.strCalibrationTime = (string)m_Configurations["TimeofLastDetectorCalibration"];
- DeviceConf.bSupportDDR = ((int)m_Configurations["SupportDDR"] == 1) ? true : false;
- DeviceConf.nMaxFrameNum = (int)m_Configurations["MaxFrameNum"];
- DeviceConf.strWiredIP = (string)m_Configurations["DetectorWiredIP"];
- DeviceConf.strWirelessIP = (string)m_Configurations["DetectorWirelessIP"];
- DeviceConf.strLocalIP = (string)m_Configurations["LocalIP"];
- DeviceConf.nPort = (int)m_Configurations["DetectorPort"];
- DeviceConf.strFPDSN = (string)m_Configurations["FPDSN"];
- DeviceConf.nRADDelayTime = (int)m_Configurations["RADDelayTime"];
- DeviceConf.fMaxFrameRate = (float)m_Configurations["MaxFrameRate"];
- DeviceConf.nOffsetInterval = (int)m_Configurations["OffsetInterval"];
- }
- catch (ResDataObjectExption &e)
- {
- Error("Get config error: %s \r\n", e.what());
- return false;
- }
- return true;
- }
- bool nsFPD::DetectorConfiguration::SaveConfig()
- {
- try
- {
- m_ConfigAll["CONFIGURATION"] = m_Configurations;
- }
- catch (...)
- {
- return false;
- }
- return m_ConfigAll.SaveFile((m_strConfigPath).c_str());
- }
- /***
- * 根据nMode,获取对应的ModeInfo
- * nMode: 采集模式
- ***/
- bool nsFPD::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;
- }
|