DetectorConfiguration.cpp 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #include "stdafx.h"
  2. #include "DetectorConfiguration.h"
  3. #include "Detector_Model_Def.h"
  4. DetectorConfiguration::DetectorConfiguration(string ConfigPath)
  5. {
  6. m_strConfigPath = ConfigPath;
  7. }
  8. DetectorConfiguration::~DetectorConfiguration()
  9. {
  10. }
  11. void TransferModuleJosnConfig2DriverConfig(ResDataObject& config)
  12. {
  13. for (int x = 0; x < config.size(); x++)
  14. {
  15. //Èç¹ûÓÐValue
  16. if (config[x].GetKeyCount("Value") > 0)
  17. {
  18. if (config[x]["Value"].size() <= 0)
  19. {
  20. string va = (const char*)config[x]["Value"];
  21. config[x] = va.c_str();
  22. }
  23. else
  24. {
  25. ResDataObject rest = config[x]["Value"];
  26. config[x] = rest;
  27. }
  28. }
  29. }
  30. }
  31. bool DetectorConfiguration::LoadConfigurations(DeviceIndexStruct & DeviceConf)
  32. {
  33. FINFO("LoadConfigurations {$}", m_strConfigPath.c_str());
  34. if (!m_ConfigAll.loadFile(m_strConfigPath.c_str()))
  35. {
  36. printf("Load configuration file failed!!! \n");
  37. return false;
  38. }
  39. try
  40. {
  41. m_Configurations = m_ConfigAll["CONFIGURATION"];
  42. if (m_strConfigPath.find(".json") != std::string::npos)
  43. {
  44. TransferModuleJosnConfig2DriverConfig(m_Configurations);
  45. }
  46. //½âÎöconfig
  47. DeviceConf.strDeviceName = (string)m_Configurations["Description"];
  48. DeviceConf.strPanelSerial = (string)m_Configurations["SerialNumber"];
  49. int nModeCount = (int)m_Configurations["ModeTable"].size();
  50. for (int i = 0; i < nModeCount; i++)
  51. {
  52. DeviceConf.nFullImageWidth = m_Configurations["ModeTable"][i]["ImageWidth"];
  53. DeviceConf.nFullImageHeight = m_Configurations["ModeTable"][i]["ImageHeight"];
  54. DeviceConf.nRawWidth = m_Configurations["ModeTable"][i]["RawImgWidth"];
  55. DeviceConf.nRawHeight = m_Configurations["ModeTable"][i]["RawImgHeight"];
  56. DeviceConf.nImageBits = (int)m_Configurations["ModeTable"][i]["PhySizeInfoBit"];
  57. DeviceConf.nImageLeftOffset = m_Configurations["ModeTable"][i]["LeftOffset"];
  58. DeviceConf.nImageTopOffset = m_Configurations["ModeTable"][i]["TopOffset"];
  59. DeviceConf.nImageRightOffset = m_Configurations["ModeTable"][i]["RightOffset"];
  60. DeviceConf.nImageBottomOffset = m_Configurations["ModeTable"][i]["BottomOffset"];
  61. DeviceConf.nPixelSpace = m_Configurations["ModeTable"][i]["PixelPitch"];
  62. DeviceConf.bPreviewEnable = ((int)m_Configurations["ModeTable"][i]["PreviewEnable"] != 0) ? true : false;
  63. DeviceConf.nPreviewWidth = m_Configurations["ModeTable"][i]["PreviewWidth"];
  64. DeviceConf.nPreviewHeight = m_Configurations["ModeTable"][i]["PreviewHeight"];
  65. DeviceConf.nSyncMode = (int)m_Configurations["ModeTable"][i]["SyncType"];
  66. }
  67. //ÆØ¹â´°¿Ú
  68. DeviceConf.nExpWindowMode = (int)m_Configurations["ExpWindowMode"];
  69. string strXWindowMode = "XWindow" + std::to_string(DeviceConf.nExpWindowMode);
  70. DeviceConf.nXWindow = (int)m_Configurations["ExpWindow"][strXWindowMode.c_str()];
  71. //connections
  72. DeviceConf.strWiredIP = (string)m_Configurations["DetectorWiredIP"];
  73. DeviceConf.strWirelessIP = (string)m_Configurations["DetectorWirelessIP"];
  74. DeviceConf.strLocalIP = (string)m_Configurations["LocalIP"];
  75. DeviceConf.bActived = (bool)m_Configurations["Attached"];
  76. DeviceConf.nDoseOfEXI = (int)m_Configurations["Sensitivity"];
  77. string strWorkStation = (string)m_Configurations["WorkStation"];
  78. if (strWorkStation.find("Table") != std::string::npos)
  79. {
  80. DeviceConf.nWorkstation = 0;
  81. }
  82. else if (strWorkStation.find("Wall") != std::string::npos)
  83. {
  84. DeviceConf.nWorkstation = 1;
  85. }
  86. else if (strWorkStation.find("Free") != std::string::npos)
  87. {
  88. DeviceConf.nWorkstation = 3;
  89. }
  90. else
  91. {
  92. DeviceConf.nWorkstation = 0;
  93. }
  94. DeviceConf.nCalibDueSetting = (int)m_Configurations["CalibrationDue"];
  95. DeviceConf.nMaxShockNumber = (int)m_Configurations["MaxShockNumber"];
  96. DeviceConf.bSDKSaveLog = ((int)m_Configurations["SDKSaveLog"] != 0) ? true : false;
  97. DeviceConf.strSDKSaveLogPath = (string)m_Configurations["SDKSaveLogPath"];
  98. DeviceConf.bSDKSaveRaw = ((int)m_Configurations["SDKSaveRaw"] != 0) ? true : false;
  99. DeviceConf.strSDKSaveRawPath = (string)m_Configurations["SDKSaveRawPath"];
  100. DeviceConf.strCalibrationDate = (string)m_Configurations["DateofLastDetectorCalibration"];
  101. DeviceConf.strCalibrationTime = (string)m_Configurations["TimeofLastDetectorCalibration"];
  102. DeviceConf.nSaveRaw = (int)m_Configurations["IsSaveRaw"];
  103. DeviceConf.bTemperatureEnable = ((int)m_Configurations["TemperatureEnable"] != 0) ? true : false;
  104. DeviceConf.fTemperMaxLimit = (float)m_Configurations["TempMaxLimit"];
  105. DeviceConf.fTemperUpLimit = (float)m_Configurations["TempUpperLimit"];
  106. DeviceConf.fTemperLowLimit = (float)m_Configurations["TempLowerLimit"];
  107. DeviceConf.fTemperMinLimit = (float)m_Configurations["TempMinLimit"];
  108. DeviceConf.fCalibTemperUp = (float)m_Configurations["CalibTemperUp"];
  109. DeviceConf.fCalibTemperLow = (float)m_Configurations["CalibTemperLow"];
  110. DeviceConf.bBatteryEnable = ((int)m_Configurations["BatteryEnable"] != 0) ? true : false;
  111. DeviceConf.nBatteryWarning = (int)m_Configurations["BatLowerLimit"];
  112. DeviceConf.nBatteryLimit = (int)m_Configurations["BatMiniLimit"];
  113. DeviceConf.bWifiEnable = ((int)m_Configurations["WifiEnable"] != 0) ? true : false;
  114. DeviceConf.nWifiWarning = (int)m_Configurations["WifiLowerLimit"];
  115. DeviceConf.nWifiLimit = (int)m_Configurations["WifiMiniLimit"];
  116. }
  117. catch (...)
  118. {
  119. printf("Load configuration item failed, exception!!!");
  120. return false;
  121. }
  122. return true;
  123. }
  124. bool DetectorConfiguration::SaveConfig()
  125. {
  126. try
  127. {
  128. m_ConfigAll["CONFIGURATION"] = m_Configurations;
  129. }
  130. catch (...)
  131. {
  132. return false;
  133. }
  134. return m_ConfigAll.SaveFile((m_strConfigPath).c_str());
  135. }
  136. bool DetectorConfiguration::LoadCalibrationDose(string& strWorkPath, ResDataObject& CalibDoseList, int& nCalibTotalExpNum)
  137. {
  138. ResDataObject RdoCalibDoseList;
  139. try
  140. {
  141. string strCalibDosePath = strWorkPath + (string)m_Configurations["CalibrationDosePath"] + "\\CalibrationDose_Yuying.xml";
  142. FINFO("start load calibDose file: {$}", strCalibDosePath);
  143. struct stat buffer;
  144. if (stat(strCalibDosePath.c_str(), &buffer) == 0)
  145. {
  146. RdoCalibDoseList.loadFile(strCalibDosePath.c_str());
  147. CalibDoseList = RdoCalibDoseList["List"];
  148. FINFO("CalibDoseList: {$} ", CalibDoseList.encode());
  149. for (int i = 0; i < CalibDoseList.size(); i++)
  150. {
  151. ResDataObject temp = CalibDoseList[i];
  152. int nExpNum = temp["ExpNum"];
  153. nCalibTotalExpNum += nExpNum;
  154. //FINFO("temp: {$} ", temp.encode());
  155. }
  156. }
  157. else
  158. {
  159. FERROR("{$} file not exist!", strCalibDosePath);
  160. return false;
  161. }
  162. }
  163. catch (exception e)
  164. {
  165. FERROR("Get calibDose error: {$}", e.what());
  166. return false;
  167. }
  168. return true;
  169. }