DetectorConfiguration.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #include "stdafx.h"
  2. #include "CCOS.Dev.FPDDeviceMould.hpp"
  3. #include "DetectorConfiguration.h"
  4. #include "Detector_Model_Def.h"
  5. #include "common_api.h"
  6. #include "CCOSConfigurations.h"
  7. namespace nsFPD = CCOS::Dev::Detail::Detector;
  8. extern Log4CPP::Logger* gLogger;
  9. nsFPD::DetectorConfiguration::DetectorConfiguration(string ConfigPath)
  10. : m_strConfigPath(ConfigPath)
  11. , m_nDetModeNum(0)
  12. , m_pDetModeList(nullptr)
  13. {
  14. }
  15. nsFPD::DetectorConfiguration::~DetectorConfiguration()
  16. {
  17. if (m_pDetModeList)
  18. {
  19. delete[] m_pDetModeList;
  20. m_pDetModeList = nullptr;
  21. }
  22. }
  23. bool nsFPD::DetectorConfiguration::LoadConfigurations(DeviceIndexStruct & DeviceConf)
  24. {
  25. Info("Input the ConfigPath: {$}", m_strConfigPath);
  26. if (!m_ConfigAll.loadFile((m_strConfigPath).c_str()))
  27. {
  28. printf( "Load configuration file failed!!! \n");
  29. return false;
  30. }
  31. try
  32. {
  33. m_Configurations = m_ConfigAll["CONFIGURATION"];
  34. TransferModuleJosnConfig2DriverConfig(m_Configurations);
  35. auto Child_table = m_Configurations[NODE_ModeTable];
  36. m_nDetModeNum = (int)Child_table.size();
  37. if (m_nDetModeNum > 0)
  38. {
  39. m_pDetModeList = new DetModeInfo[m_nDetModeNum];
  40. }
  41. for (int i = 0; i < m_nDetModeNum; i++)
  42. {
  43. //加载所有modeinfo到结构体
  44. m_pDetModeList[i].nLogicMode = (int)Child_table[i]["LogicMode"];
  45. m_pDetModeList[i].strExamType = (string)Child_table[i]["ExamType"];
  46. m_pDetModeList[i].nImageWidth = (int)Child_table[i]["ImageWidth"];
  47. m_pDetModeList[i].nImageHeight = (int)Child_table[i]["ImageHeight"];
  48. m_pDetModeList[i].nWidthOffset = (int)Child_table[i]["WidthOffset"];
  49. m_pDetModeList[i].nHeightOffset = (int)Child_table[i]["HeightOffset"];
  50. m_pDetModeList[i].nRawImgWidth = (int)Child_table[i]["RawImgWidth"];
  51. m_pDetModeList[i].nRawImgHeight = (int)Child_table[i]["RawImgHeight"];
  52. m_pDetModeList[i].nPhySizeInfoBit = (int)Child_table[i]["PhySizeInfoBit"];
  53. m_pDetModeList[i].nSensitivity = (int)Child_table[i]["Sensitivity"];
  54. m_pDetModeList[i].bPreviewEnable = ((int)Child_table[i]["PreviewEnable"] == 1) ? true : false;
  55. m_pDetModeList[i].nPreviewWidth = (int)Child_table[i]["PreviewWidth"];
  56. m_pDetModeList[i].nPreviewHeight = (int)Child_table[i]["PreviewHeight"];
  57. m_pDetModeList[i].nPixelPitch = (int)Child_table[i]["PixelPitch"];
  58. m_pDetModeList[i].nSyncType = (int)Child_table[i]["SyncType"];
  59. m_pDetModeList[i].nXwindow = (int)Child_table[i]["XwindowSize"];
  60. m_pDetModeList[i].bIsSaveRaw = ((int)Child_table[i]["IsSaveRaw"] == 1) ? true : false;
  61. m_pDetModeList[i].nRotateAngle = (int)Child_table[i]["RotateAngle"];
  62. m_pDetModeList[i].nBinningDx = (int)Child_table[i]["BinningX"];
  63. m_pDetModeList[i].nBinningDy = (int)Child_table[i]["BinningY"];
  64. m_pDetModeList[i].nGainValue = (int)Child_table[i]["GainValue"];
  65. m_pDetModeList[i].nFrequency = (int)Child_table[i]["Frequency"];
  66. m_pDetModeList[i].nFrameCount = (int)Child_table[i]["FrameCount"];
  67. m_pDetModeList[i].nWorkStation = (int)Child_table[i]["WorkStation"];
  68. m_pDetModeList[i].nOperationMode = (int)Child_table[i]["OperationMode"];
  69. m_pDetModeList[i].nExpTime = (int)Child_table[i]["ExpTime"];
  70. m_pDetModeList[i].nTriggerType = (int)Child_table[i]["TriggerType"];
  71. m_pDetModeList[i].nExiThreshold = (int)Child_table[i]["ExiThreshold"];
  72. //获取所有模式中最大图像尺寸,用于申请共享内存
  73. if (m_pDetModeList[i].nRawImgWidth * m_pDetModeList[i].nRawImgHeight > DeviceConf.nMaxImgWidth * DeviceConf.nMaxImgHeight)
  74. {
  75. DeviceConf.nMaxImgWidth = m_pDetModeList[i].nRawImgWidth;
  76. DeviceConf.nMaxImgHeight = m_pDetModeList[i].nRawImgHeight;
  77. }
  78. } //end for
  79. DeviceConf.AcqModeInfo = m_pDetModeList[0]; //默认取第一个
  80. DeviceConf.strDeviceName = (string)m_Configurations[DetectorDescription];
  81. DeviceConf.fTemperMaxLimit = (float)m_Configurations[ConfKey::CcosTempMaxLimit];
  82. DeviceConf.fTemperMaxWarn = (float)m_Configurations[ConfKey::CcosTempUpperLimit];
  83. DeviceConf.fTemperLowLimit = (float)m_Configurations[ConfKey::CcosTempLowerLimit];
  84. DeviceConf.fTemperMinWarn = (float)m_Configurations[ConfKey::CcosTempMinLimit];
  85. DeviceConf.nBatteryWarning = (int)m_Configurations[ConfKey::CcosBatLowerLimit];
  86. DeviceConf.nBatteryLimit = (int)m_Configurations[ConfKey::CcosBatMiniLimit];
  87. DeviceConf.nWifiWarning = (int)m_Configurations[ConfKey::CcosWifiLowerLimit];
  88. DeviceConf.nWifiLimit = (int)m_Configurations[ConfKey::CcosWifiMiniLimit];
  89. DeviceConf.strCalibrationDate = (string)m_Configurations["DateofLastDetectorCalibration"];
  90. DeviceConf.strCalibrationTime = (string)m_Configurations["TimeofLastDetectorCalibration"];
  91. DeviceConf.bSupportDDR = ((int)m_Configurations["SupportDDR"] == 1) ? true : false;
  92. DeviceConf.nMaxFrameNum = (int)m_Configurations["MaxFrameNum"];
  93. DeviceConf.strWiredIP = (string)m_Configurations["DetectorWiredIP"];
  94. DeviceConf.strWirelessIP = (string)m_Configurations["DetectorWirelessIP"];
  95. DeviceConf.strLocalIP = (string)m_Configurations["LocalIP"];
  96. DeviceConf.nPort = (int)m_Configurations["DetectorPort"];
  97. DeviceConf.strFPDSN = (string)m_Configurations["FPDSN"];
  98. DeviceConf.nRADDelayTime = (int)m_Configurations["RADDelayTime"];
  99. DeviceConf.fMaxFrameRate = (float)m_Configurations["MaxFrameRate"];
  100. DeviceConf.nOffsetInterval = (int)m_Configurations["OffsetInterval"];
  101. }
  102. catch (ResDataObjectExption &e)
  103. {
  104. Error("Get config error: %s \r\n", e.what());
  105. return false;
  106. }
  107. return true;
  108. }
  109. bool nsFPD::DetectorConfiguration::SaveConfig()
  110. {
  111. try
  112. {
  113. m_ConfigAll["CONFIGURATION"] = m_Configurations;
  114. }
  115. catch (...)
  116. {
  117. return false;
  118. }
  119. return m_ConfigAll.SaveFile((m_strConfigPath).c_str());
  120. }
  121. /***
  122. * 根据nMode,获取对应的ModeInfo
  123. * nMode: 采集模式
  124. ***/
  125. bool nsFPD::DetectorConfiguration::GetDetModeInfo(int nMode, DetModeInfo& AcqModeInfo)
  126. {
  127. bool bFind = false;
  128. for (int i = 0; i < m_nDetModeNum; i++)
  129. {
  130. DetModeInfo stTemp = m_pDetModeList[i];
  131. if (nMode == stTemp.nLogicMode)
  132. {
  133. AcqModeInfo = m_pDetModeList[i];
  134. bFind = true;
  135. break;
  136. }
  137. }
  138. return bFind;
  139. }