DIOS.Dev.FPD.KonicaDR.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #pragma once
  2. #include "CCOS.Dev.FPDDeviceMould.hpp"
  3. #include "OemAcq.h"
  4. #include "OemSync.h"
  5. #include "OemCtrl.h"
  6. #include "OemCalib.h"
  7. #include "DetectorConfiguration.h"
  8. #include "FPDErrorWarningProcess.h"
  9. #ifdef CCOSFPD_EXPORTS
  10. #define CCOSDEVDR_CLASS __declspec(dllexport)
  11. #else
  12. #define CCOSDEVDR_CLASS __declspec(dllimport)
  13. #endif
  14. namespace CCOS::Dev::Detail::Detector
  15. {
  16. class CCOSDEVDR_CLASS KonicaDriver : public FPDDriverMould
  17. {
  18. FPDDeviceKonica* pObjDev;
  19. ResDataObject m_DeviceConfig;
  20. ResDataObject m_ConfigAll; //存储当前的配置,用于修改配置时写回文件
  21. ResDataObject m_Configurations; //存储当前配置中“CONFIGURATION”节点的内容
  22. std::unique_ptr <ResDataObject> m_pAttribute;
  23. std::unique_ptr <ResDataObject> m_pDescription;
  24. public:
  25. KonicaDriver();
  26. virtual ~KonicaDriver();
  27. bool m_bDriverConnect; //driver是否连接的标记位
  28. virtual void Prepare() override;
  29. virtual bool Connect() override;
  30. virtual void Disconnect() override;
  31. virtual bool isConnected() const override;
  32. virtual auto CreateDevice(int index)->std::unique_ptr <IODevice> override;
  33. virtual std::string DriverProbe() override;
  34. virtual std::string GetResource() override;
  35. virtual std::string DeviceProbe() override;
  36. virtual bool GetDeviceConfig(std::string& Cfg) override;
  37. virtual bool SetDeviceConfig(std::string Cfg) override;
  38. bool SaveConfigFile(bool bSendNotify);
  39. bool GetDeviceConfigValue(ResDataObject config, const char* pInnerKey, int nPathID, string& strValue);
  40. bool SetDeviceConfigValue(ResDataObject &config, const char* pInnerKey, int nPathID, const char* szValue);
  41. };
  42. namespace nsDetail = CCOS::Dev::Detail;
  43. class CCOSDEVDR_CLASS FPDDeviceKonica : public FPDDeviceMould
  44. {
  45. using super = IODeviceDetail; //IODeviceDetail类的别名声明
  46. std::unique_ptr <DetectorCtrlUnit> m_DetectorCtrlUnit;
  47. std::unique_ptr <AcqUnit> m_AcqUnit;
  48. std::unique_ptr <SyncUnit> m_SyncUnit;
  49. std::unique_ptr <CalibUnit> m_CalibUnit;
  50. std::unique_ptr <DeviceTemperatureMould> m_Temperature;
  51. std::unique_ptr <DeviceBatteryMould> m_Battery;
  52. std::unique_ptr <DeviceWifiMould> m_Wifi;
  53. std::unique_ptr <DetectorConfiguration> m_DetectorConfiguration;
  54. std::unique_ptr <FPDErrorWarning> m_WarnAndError;
  55. std::string m_strWorkPath;
  56. int m_nFullImageHeight;
  57. int m_nFullImageWidth;
  58. int m_nPreviewEnable;
  59. int m_nPreviewImageWidth;
  60. int m_nPreviewImageHeight;
  61. int m_nImgBits;
  62. int m_nAngle;
  63. int m_nPixelSpacing;
  64. int m_nSensitivity;
  65. WORD* m_pFullImgBuffer;
  66. WORD* m_pPreviewImgBuffer;
  67. AppStatus m_eAppStatus;//记录软件状态
  68. bool m_bDeviceConnect;
  69. SYSTEMTIME m_stSystemTime; //记录图像生成时间(软同步使用开窗时间),用于填写dicom
  70. SYNC_MODE m_eSyncMode;
  71. float m_fFactorEXI2UGY; //探测器EXI -> UGY 转换系数
  72. ResDataObject m_CalibDoseList; //ZSKK校正时加载校正剂量配置
  73. int m_nTargetCalibExi;// 校正时图像需要达到的EXI值 康众1500cwII增益校正 7500-12500 EXI范围
  74. int m_nCalibTotalExposureNum; //校正曝光总次数
  75. int m_nCalibCurrentCalibrationRound; //校正曝光第几轮
  76. int m_nCalibCurrentExposureIndex; //当前轮点击Accept 曝光第几次
  77. int m_nCalibCurrentExposureNum; //点击Accept 接受曝光的总次数
  78. bool m_bEnterAcqStatus;//探测器是否真正进入了采集状态,与通知工作流事件触发的状态不同,这个是真正的状态
  79. CCOS_CALIBRATION_TYPE m_CalibType;
  80. public:
  81. DeviceIndexStruct m_stDeviceConfig;
  82. public:
  83. FPDDeviceKonica(std::shared_ptr<IOEventCenter> center, std::string strConfigPath);
  84. ~FPDDeviceKonica();
  85. virtual std::string GetGUID() const override;
  86. virtual bool Prepare() override;
  87. bool CreateDevice();
  88. void Register();
  89. RET_STATUS Connect();
  90. RET_STATUS EnterExam(int nExamMode);
  91. RET_STATUS SetAcqMode(string strAcqMode);
  92. RET_STATUS GetSyncMode(SYNC_MODE &eSyncMode);
  93. RET_STATUS PrepareAcquisition();
  94. RET_STATUS StartAcquisition(string in = "");
  95. RET_STATUS StopAcquisition();
  96. RET_STATUS ActiveCalibration(CCOS_CALIBRATION_TYPE eType);
  97. RET_STATUS PrepareCalibration();
  98. RET_STATUS GetRequestedDose(std::string& strDose);
  99. RET_STATUS SetRequestedDose(std::string strDose);
  100. RET_STATUS StartCalibration();
  101. RET_STATUS StopCalibration();
  102. RET_STATUS GetCalibrationStep(int nDetectorID, string& strCalibrationStepInfo);
  103. RET_STATUS AcceptCalibration();
  104. RET_STATUS RejectCalibration();
  105. RET_STATUS SaveCalibrationFile(bool bSaveFlag);
  106. RET_STATUS ActiveSyncMode(int nSyncMode);
  107. RET_STATUS ActiveDetector(bool bActive);
  108. RET_STATUS UpdateCalibMode(CCOS_CALIBRATION_MODE eCalibMode);
  109. RET_STATUS UpdateNotifyStatusTimePeriod(int nTime);
  110. RET_STATUS UpdateReconnectTimePeriod(int nTime);
  111. RET_STATUS SetResolution(int nResolution);
  112. RET_STATUS UpdateLastCalibrationDate(std::string in);
  113. RET_STATUS UpdateCalibrationFileExpireTime(std::string in);
  114. RET_STATUS UpdateCalibrationFileExpirationReminder(std::string in);
  115. RET_STATUS GetDetectorInfo(string& strInfo);
  116. void AbortCalibration();
  117. bool CompleteCalibration();
  118. void OnFPDCallback(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  119. bool Support_DarkCalib();
  120. bool Support_XrayCalib();
  121. bool GetLogicMode(string& strAcqMode, int& nLogicMode);
  122. string MakeImageHead(IMAGE_VIEW_TYPE Type);
  123. private:
  124. void SendTemperatureValue(float fValue);
  125. void SendWifiValue(int nValue);
  126. void SendBatteryValue(int nValue);
  127. bool LoadConfig();
  128. void OnEventProcessConf(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  129. void OnEventProcessInfo(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  130. void OnEventProcessStatus(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  131. void OnEventProcessData(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  132. void OnEventProcessError(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  133. void OnEventProcessWarning(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  134. protected:
  135. void RegisterCtrl(nsDetail::Dispatch* Dispatch);
  136. void RegisterAcq(nsDetail::Dispatch* Dispatch);
  137. void RegisterSync(nsDetail::Dispatch* Dispatch);
  138. void RegisterCalib(nsDetail::Dispatch* Dispatch);
  139. void RegisterOthers(nsDetail::Dispatch* Dispatch);
  140. };
  141. }