DetectorConfiguration.cpp 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #include "stdafx.h"
  2. #include "DetectorConfiguration.h"
  3. #include "Detector_Model_Def.h"
  4. #include "common_api.h"
  5. DetectorConfiguration::DetectorConfiguration(string ConfigPath)
  6. : m_strConfigPath(ConfigPath)
  7. , m_nDetModeNum(0)
  8. , m_pDetModeList(nullptr)
  9. {
  10. }
  11. DetectorConfiguration::~DetectorConfiguration()
  12. {
  13. if (m_pDetModeList)
  14. {
  15. delete[] m_pDetModeList;
  16. m_pDetModeList = nullptr;
  17. }
  18. }
  19. bool DetectorConfiguration::LoadConfigurations(DeviceIndexStruct & DeviceConf)
  20. {
  21. if (!m_ConfigAll.loadFile((m_strConfigPath).c_str()))
  22. {
  23. printf( "Load configuration file failed!!! \n");
  24. return false;
  25. }
  26. try
  27. {
  28. m_Configurations = m_ConfigAll["CONFIGURATION"];
  29. //printf("m_Configurations:\n %s\n", m_Configurations.encode());
  30. if (m_strConfigPath.find(".json") != std::string::npos)
  31. {
  32. TransferModuleJosnConfig2DriverConfig(m_Configurations);
  33. m_nDetModeNum = (int)m_Configurations["ModeTable"].size();
  34. }
  35. else if (m_strConfigPath.find(".xml") != std::string::npos)
  36. {
  37. m_nDetModeNum = (int)m_Configurations["ModeTable"].GetKeyCount("DetectorMode");
  38. }
  39. //解析config
  40. DeviceConf.strDeviceName = (string)m_Configurations["Description"];
  41. DeviceConf.strPanelSerial = (string)m_Configurations["SerialNumber"];
  42. DeviceConf.strDetectorModel = (string)m_Configurations["DetectorModel"];
  43. printf("\n DetectorMode number: %d \n", m_nDetModeNum);
  44. m_pDetModeList = new DetModeInfo[m_nDetModeNum];
  45. for (int i = 0; i < m_nDetModeNum; i++)
  46. {
  47. m_pDetModeList[i].nLogicMode = (int)m_Configurations["ModeTable"][i]["LogicMode"];
  48. m_pDetModeList[i].strExamType = (string)m_Configurations["ModeTable"][i]["ExamType"];
  49. m_pDetModeList[i].nOperationMode = (int)m_Configurations["ModeTable"][i]["OperationMode"];
  50. m_pDetModeList[i].nRawImgWidth = (int)m_Configurations["ModeTable"][i]["RawImgWidth"];
  51. m_pDetModeList[i].nRawImgHeight = (int)m_Configurations["ModeTable"][i]["RawImgHeight"];
  52. m_pDetModeList[i].nImageWidth = (int)m_Configurations["ModeTable"][i]["ImageWidth"];
  53. m_pDetModeList[i].nImageHeight = (int)m_Configurations["ModeTable"][i]["ImageHeight"];
  54. m_pDetModeList[i].nPhySizeInfoBit = (int)m_Configurations["ModeTable"][i]["PhySizeInfoBit"];
  55. m_pDetModeList[i].nImageLeftOffset = (int)m_Configurations["ModeTable"][i]["LeftOffset"];
  56. m_pDetModeList[i].nImageTopOffset = (int)m_Configurations["ModeTable"][i]["TopOffset"];
  57. m_pDetModeList[i].nImageRightOffset = (int)m_Configurations["ModeTable"][i]["RightOffset"];
  58. m_pDetModeList[i].nImageBottomOffset = (int)m_Configurations["ModeTable"][i]["BottomOffset"];
  59. m_pDetModeList[i].nPixelPitch = (int)m_Configurations["ModeTable"][i]["PixelPitch"];
  60. m_pDetModeList[i].bPreviewEnable = ((int)m_Configurations["ModeTable"][i]["PreviewEnable"] != 0) ? true : false;
  61. m_pDetModeList[i].nPreviewWidth = (int)m_Configurations["ModeTable"][i]["PreviewWidth"];
  62. m_pDetModeList[i].nPreviewHeight = (int)m_Configurations["ModeTable"][i]["PreviewHeight"];
  63. m_pDetModeList[i].nSyncType = (int)m_Configurations["ModeTable"][i]["SyncType"];
  64. m_pDetModeList[i].nCorrectionType = (int)m_Configurations["ModeTable"][i]["CorrectionType"];
  65. m_pDetModeList[i].nBinningMode = (int)m_Configurations["ModeTable"][i]["BinningMode"];
  66. m_pDetModeList[i].nZoomMode = (int)m_Configurations["ModeTable"][i]["ZoomMode"];
  67. m_pDetModeList[i].nGainValue = (int)m_Configurations["ModeTable"][i]["GainValue"];
  68. m_pDetModeList[i].nFrequency = (int)m_Configurations["ModeTable"][i]["Frequency"];
  69. m_pDetModeList[i].nXwindow = (int)m_Configurations["ModeTable"][i]["Xwindow"];
  70. m_pDetModeList[i].nReadoutTime = (int)m_Configurations["ModeTable"][i]["ReadoutTime"];
  71. m_pDetModeList[i].nFrameCount = (int)m_Configurations["ModeTable"][i]["FrameCount"];
  72. m_pDetModeList[i].nTriggerType = (int)m_Configurations["ModeTable"][i]["TriggerType"];
  73. m_pDetModeList[i].nWorkStation = (int)m_Configurations["ModeTable"][i]["WorkStation"];
  74. m_pDetModeList[i].nSensitivity = (int)m_Configurations["ModeTable"][i]["Sensitivity"];
  75. m_pDetModeList[i].nExiThreshold = (int)m_Configurations["ModeTable"][i]["ExiThreshold"];
  76. m_pDetModeList[i].nRotateAngle = (int)m_Configurations["ModeTable"][i]["RotateAngle"];
  77. m_pDetModeList[i].bOffsetEnable = ((int)m_Configurations["ModeTable"][i]["OffsetEnable"] != 0) ? true : false;
  78. m_pDetModeList[i].bSaveRawEnable = ((int)m_Configurations["ModeTable"][i]["SaveRawEnable"] != 0) ? true : false;
  79. }
  80. DeviceConf.AcqModeInfo = m_pDetModeList[0]; //默认取第一个
  81. //connections
  82. DeviceConf.strIPAddress = (string)m_Configurations["DetectorWiredIP"];
  83. DeviceConf.strWiredIP = (string)m_Configurations["DetectorWiredIP"];
  84. DeviceConf.strWirelessIP = (string)m_Configurations["DetectorWirelessIP"];
  85. DeviceConf.strLocalIP = (string)m_Configurations["LocalIP"];
  86. DeviceConf.nOffsetMode = (int)m_Configurations["OffsetMode"];
  87. DeviceConf.nDoseOfEXI = (int)m_Configurations["Sensitivity"];
  88. DeviceConf.nWorkstation = (int)m_Configurations["WorkStation"];
  89. DeviceConf.nSaturationValue = (int)m_Configurations["SaturationValue"];
  90. DeviceConf.nCalibDueSetting = (int)m_Configurations["CalibrationDue"];
  91. DeviceConf.nSaveRaw = (int)m_Configurations["IsSaveRaw"];
  92. DeviceConf.bTemperatureEnable = ((int)m_Configurations["TemperatureEnable"] != 0) ? true : false;
  93. DeviceConf.fTemperMaxLimit = (float)m_Configurations["TempMaxLimit"];
  94. DeviceConf.fTemperUpLimit = (float)m_Configurations["TempUpperLimit"];
  95. DeviceConf.fTemperLowLimit = (float)m_Configurations["TempLowerLimit"];
  96. DeviceConf.fTemperMinLimit = (float)m_Configurations["TempMinLimit"];
  97. DeviceConf.fCalibTemperUp = (float)m_Configurations["CalibTemperUp"];
  98. DeviceConf.fCalibTemperLow = (float)m_Configurations["CalibTemperLow"];
  99. DeviceConf.bBatteryEnable = ((int)m_Configurations["BatteryEnable"] != 0) ? true : false;
  100. DeviceConf.nBatteryWarning = (int)m_Configurations["BatLowerLimit"];
  101. DeviceConf.nBatteryLimit = (int)m_Configurations["BatMiniLimit"];
  102. DeviceConf.bWifiEnable = ((int)m_Configurations["WifiEnable"] != 0) ? true : false;
  103. DeviceConf.nWifiWarning = (int)m_Configurations["WifiLowerLimit"];
  104. DeviceConf.nWifiLimit = (int)m_Configurations["WifiMiniLimit"];
  105. }
  106. catch (...)
  107. {
  108. printf("Load configuration item failed, exception!!!");
  109. return false;
  110. }
  111. return true;
  112. }
  113. bool DetectorConfiguration::SaveConfig()
  114. {
  115. try{
  116. m_ConfigAll["CONFIGURATION"] = m_Configurations;
  117. }
  118. catch (...)
  119. {
  120. return false;
  121. }
  122. return m_ConfigAll.SaveFile((m_strConfigPath).c_str());
  123. }
  124. /***
  125. * 根据nMode,获取对应的ModeInfo
  126. * nMode: 采集模式
  127. ***/
  128. bool DetectorConfiguration::GetDetModeInfo(int nMode, DetModeInfo& AcqModeInfo)
  129. {
  130. bool bFind = false;
  131. for (int i = 0; i < m_nDetModeNum; i++)
  132. {
  133. DetModeInfo stTemp = m_pDetModeList[i];
  134. if (nMode == stTemp.nLogicMode)
  135. {
  136. AcqModeInfo = m_pDetModeList[i];
  137. bFind = true;
  138. break;
  139. }
  140. }
  141. return bFind;
  142. }