DetectorConfiguration.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "DetectorConfiguration.h"
  2. #include "Detector_Model_Def.h"
  3. #include "common_api.h"
  4. DetectorConfiguration::DetectorConfiguration(string ConfigPath)
  5. {
  6. m_strConfigPath = ConfigPath;
  7. }
  8. DetectorConfiguration::~DetectorConfiguration()
  9. {
  10. }
  11. bool DetectorConfiguration::LoadConfigurations(DeviceIndexStruct & DeviceConf, ResDataObject & ACQMODElist)
  12. {
  13. if (!m_ConfigAll.loadFile((m_strConfigPath).c_str()))
  14. {
  15. printf( "Load configuration file failed!!! \n");
  16. return false;
  17. }
  18. try
  19. {
  20. m_Configurations = m_ConfigAll["CONFIGURATION"];
  21. TransferModuleJosnConfig2DriverConfig(m_Configurations);
  22. //解析config
  23. int nAcqMode = 1;
  24. char sstream[10] = { 0 }; //用于转换值
  25. DeviceConf.strDeviceName = (string)m_Configurations[DetectorDescription];
  26. DeviceConf.strPanelSerial = (string)m_Configurations[DetectorSerialNumber];
  27. int nModeCount = (int)m_Configurations["ModeTable"].size();
  28. for (int i = 0; i < nModeCount; i++)
  29. {
  30. ResDataObject mode;
  31. int temp = (int)m_Configurations["ModeTable"][i]["LogicMode"];
  32. mode.add(CcosAcqModeIdx, temp);
  33. temp = (int)m_Configurations["ModeTable"][i]["RawImgWidth"];
  34. mode.add(RawImgWidth, temp);
  35. temp = (int)m_Configurations["ModeTable"][i]["RawImgHeight"];
  36. mode.add(RawImgHeight, temp);
  37. temp = (int)m_Configurations["ModeTable"][i]["WidthOffset"];
  38. mode.add(WidthOffset, temp);
  39. temp = (int)m_Configurations["ModeTable"][i]["HeightOffset"];
  40. mode.add(HeightOffset, temp);
  41. temp = (int)m_Configurations["ModeTable"][i]["ImageWidth"];
  42. mode.add(CcosImageWidth, temp);
  43. temp = (int)m_Configurations["ModeTable"][i]["ImageHeight"];
  44. mode.add(CcosImageHeight, temp);
  45. temp = (int)m_Configurations["ModeTable"][i]["PhySizeInfoBit"];
  46. mode.add(CcosImageBits, temp);
  47. temp = (int)m_Configurations["ModeTable"][i]["GainValue"];
  48. mode.add(CcosGainTitle, temp);
  49. temp = (int)m_Configurations["ModeTable"][i]["SendImageInterval"];
  50. mode.add("SendImageInterval", temp);
  51. temp = (int)m_Configurations["ModeTable"][i]["PixelPitch"];
  52. mode.add(CcosImagePixelSpacing, temp);
  53. temp = (int)m_Configurations["ModeTable"][i]["Sensitivity"];
  54. mode.add(CcosImageFPDSensitivity, temp);
  55. temp = (int)m_Configurations["ModeTable"][i]["PreviewEnable"];
  56. mode.add("PreviewEnable", temp);
  57. temp = (int)m_Configurations["ModeTable"][i]["PreviewWidth"];
  58. mode.add("PreviewWidth", temp);
  59. temp = (int)m_Configurations["ModeTable"][i]["PreviewHeight"];
  60. mode.add("PreviewHeight", temp);
  61. temp = (int)m_Configurations["ModeTable"][i]["Frequency"];
  62. mode.add(CcosFrameRate, temp);
  63. temp = (int)m_Configurations["ModeTable"][i]["FrameCount"];
  64. if (temp == 0)
  65. {
  66. mode.add(CcosLoopCount, (DWORD)INFINITE);//不限出图张数,由上层停止采集
  67. }
  68. else
  69. {
  70. mode.add(CcosLoopCount, temp);
  71. }
  72. snprintf(sstream, sizeof(sstream), "%d", nAcqMode);
  73. ACQMODElist.add(sstream, mode);
  74. nAcqMode++;
  75. }
  76. }
  77. catch (...)
  78. {
  79. return false;
  80. }
  81. return true;
  82. }
  83. bool DetectorConfiguration::SaveConfig()
  84. {
  85. try
  86. {
  87. m_ConfigAll["CONFIGURATION"] = m_Configurations;
  88. }
  89. catch (...)
  90. {
  91. return false;
  92. }
  93. return m_ConfigAll.SaveFile((m_strConfigPath).c_str());
  94. }