DIOS.Dev.FPD.UltrasonicProbeDR.h 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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. #define CCOSDEVFPDAPI __declspec(dllexport)
  9. namespace CCOS::Dev::Detail::Detector
  10. {
  11. class CCOSDEVFPDAPI UltrasonicProbeDriver : public FPDDriverMould
  12. {
  13. FPDDeviceUltrasonicProbe* m_pObjDev;
  14. bool m_bDriverConnect; //driver是否连接的标记位
  15. ResDataObject m_DeviceConfig;
  16. ResDataObject m_ConfigAll; //存储当前的配置,用于修改配置时写回文件
  17. ResDataObject m_Configurations; //存储当前配置中“CONFIGURATION”节点的内容
  18. std::unique_ptr <ResDataObject> m_pAttribute;
  19. std::unique_ptr <ResDataObject> m_pDescription;
  20. public:
  21. UltrasonicProbeDriver();
  22. virtual ~UltrasonicProbeDriver();
  23. virtual void Prepare() override;
  24. virtual bool Connect() override;
  25. virtual void Disconnect() override;
  26. virtual bool isConnected() const override;
  27. virtual auto CreateDevice(int index)->std::unique_ptr <IODevice> override;
  28. virtual std::string DriverProbe() override;
  29. virtual std::string GetResource() override;
  30. virtual std::string DeviceProbe() override;
  31. virtual bool GetDeviceConfig(std::string& Cfg) override;
  32. virtual bool SetDeviceConfig(std::string Cfg) override;
  33. bool SaveConfigFile(bool bSendNotify);
  34. bool GetDeviceConfigValue(ResDataObject config, const char* pInnerKey, int nPathID, string& strValue);
  35. bool SetDeviceConfigValue(ResDataObject& config, const char* pInnerKey, int nPathID, const char* szValue);
  36. };
  37. namespace nsDetail = CCOS::Dev::Detail;
  38. class CCOSDEVFPDAPI FPDDeviceUltrasonicProbe : public FPDDeviceMould
  39. {
  40. using super = IODeviceDetail; //IODeviceDetail类的别名声明
  41. std::unique_ptr <DetectorCtrlUnit> m_DetectorCtrlUnit;
  42. std::unique_ptr <AcqUnit> m_AcqUnit;
  43. std::unique_ptr <SyncUnit> m_SyncUnit;
  44. std::unique_ptr <CalibUnit> m_CalibUnit;
  45. std::unique_ptr <DetectorConfiguration> m_DetectorConfiguration;
  46. std::unique_ptr <DeviceTemperatureMould> m_Temperature;
  47. std::unique_ptr <DeviceBatteryMould> m_Battery;
  48. std::unique_ptr <DeviceWifiMould> m_Wifi;
  49. PVOID m_pDetectors;
  50. DeviceIndexStruct m_stDeviceConfig;
  51. std::string m_strWorkPath;
  52. int m_nHavePreview;//是否由预览图
  53. int m_nPreImgWidth; //预览图图像的宽
  54. int m_nPreImgHeight; //预览图图像的高
  55. int m_nPreImageBits; //预览图图像位数
  56. int m_nImageWidth;//向上推图的图像的高
  57. int m_nImageHeight; //向上推图的图像的宽
  58. int m_nImageBits;//向上推图的图像位数
  59. int m_nPixelSpacing;
  60. int m_nSensitivity;
  61. APP_STATUS m_eAppStatus;
  62. bool m_bConnect;
  63. unsigned char* m_pwRawImageData; //保存Ctrl回调的图像内存
  64. unsigned char* m_pwPreviewImg; //保存Ctrl回调的preview内存
  65. SYSTEMTIME m_stImgCreateTime; //记录图像生成时间(软同步使用开窗时间),用于填写dicom
  66. SYNC_MODE m_eSyncMode;
  67. //HANDLE m_PauseCalibrationEvt;
  68. //HANDLE m_WaitCalibDoseEvt;
  69. //ResDataObject m_CalibDoseList; //加载平板自己的校正剂量配置
  70. //int m_nCalibTotalExposureNum; //校正曝光总次数
  71. //int m_nCalibCurrentCalibrationRound; //校正曝光第几轮
  72. //int m_nCalibCurrentExposureIndex; //校正曝光第几次
  73. //int m_nCalibCurrentExposureNum; //已校正曝光总次数
  74. //int m_nXrayCalibNum;
  75. ResDataObject* m_pFullImageHead;
  76. ResDataObject* m_pPreviewImageHead;
  77. float m_fFactorEXI2UGY; //探测器EXI -> UGY 转换系数
  78. bool m_bForceGridSuppress;
  79. bool m_bAttached;
  80. //float m_fDoseParam;// 校正用的曝光计量,发送到UI 且本地记录
  81. int m_nBatteryCapacity;
  82. int m_nBatteryCharges;
  83. float m_fBatteryTemperature;
  84. //HANDLE m_UploadCalibMapOver;
  85. bool m_bResetDetector; //是否reset探测器,暂时不用
  86. int m_nShockCounts;
  87. bool m_bOnlyHaveFpd;//当前系统是否只配置了一个真实的探测器并且处于AED同步模式,其他设备没有或者是demo的 1-是 0-否 默认否
  88. public:
  89. FPDDeviceUltrasonicProbe(std::shared_ptr<IOEventCenter> center, std::string strConfigPath);
  90. ~FPDDeviceUltrasonicProbe();
  91. virtual std::string GetGUID() const override;
  92. virtual bool Prepare() override;
  93. bool CreateDevice();
  94. void Register();
  95. RET_STATUS Connect();
  96. RET_STATUS EnterExam(int nExamMode);
  97. RET_STATUS ActiveDetector(int nDetectorIndex, bool bActive);
  98. RET_STATUS SetAcqMode(int nMode);
  99. RET_STATUS PrepareAcquisition();
  100. RET_STATUS StartAcquisition(string in = "");
  101. RET_STATUS StopAcquisition();
  102. //RET_STATUS ActiveCalibration(CCOS_CALIBRATION_TYPE eType);
  103. //RET_STATUS PrepareCalibration();
  104. //RET_STATUS GetRequestedDose(std::string& strDose);
  105. //RET_STATUS SetRequestedDose(std::string strDose);
  106. //RET_STATUS StartCalibration();
  107. //RET_STATUS StopCalibration();
  108. //RET_STATUS AcceptCalibration();
  109. //RET_STATUS RejectCalibration();
  110. //RET_STATUS SaveCalibrationFile(bool bSaveFlag);
  111. //RET_STATUS GetCalibrationStep(int nDetectorID, string& strCalibrationStepInfo);
  112. //RET_STATUS PauseCalibration();
  113. RET_STATUS Reset();//重置探测器
  114. RET_STATUS GetDetectorInfo(string& strFDI);
  115. RET_STATUS ResetConnect();
  116. //bool CompleteCalibration();
  117. //void AbortCalibration();
  118. //超声相关
  119. RET_STATUS SetFreeze(int nFreeze);
  120. RET_STATUS SwitchProbe(int nProbeType);//切换探头
  121. RET_STATUS SwitchProbeMode(int nProbeMode);//切换模式
  122. RET_STATUS SetBGain(int nGain);
  123. RET_STATUS SetBDepth(int nDepth);
  124. RET_STATUS SetBFrequency(float fFrequency);
  125. RET_STATUS SetBFocus(int nFocus);
  126. RET_STATUS SetBHarmonic(int nHarmonic);
  127. RET_STATUS SetBPower(int nPower);
  128. RET_STATUS SetBDynamicRange(int nRange);
  129. RET_STATUS GetBDepth(int& nDepth, float& fDepthCm);
  130. RET_STATUS GetBFrequency(float& fFrequency);
  131. RET_STATUS GetBGain(int& nGain);
  132. RET_STATUS GetBFocus(int& nFocus, float& fFocusCm);
  133. RET_STATUS GetBDynamicRange(int& nRange);
  134. RET_STATUS SetCRoi(int x1, int x2, int y1, int y2);
  135. RET_STATUS SetCGain(int nGain);
  136. RET_STATUS SetPostLevel(int nLevel);
  137. RET_STATUS SetMirror(int nMirror);
  138. RET_STATUS SetCFrequency(float fFrequency);
  139. RET_STATUS SetCSpeedWallFilter(int nSpeedWallFilter);
  140. RET_STATUS SetCRangeWallFilter(int nRangeWallFilter);
  141. RET_STATUS SetCPersistence(int nPersistence);
  142. RET_STATUS SetCLinearAngle(int nAngle);
  143. RET_STATUS SetCPrf(int nPrf);
  144. RET_STATUS GetCFrequency(float& fFrequency);
  145. RET_STATUS GetCGain(int& nGain);
  146. RET_STATUS GetCPrf(int& nPrf);
  147. RET_STATUS GetCLinearAngle(int& nAngle);
  148. //调节图像亮暗的
  149. RET_STATUS SetTgc1(int nTgc);
  150. RET_STATUS SetTgc2(int nTgc);
  151. RET_STATUS SetTgc3(int nTgc);
  152. RET_STATUS SetTgc4(int nTgc);
  153. RET_STATUS SetTgc5(int nTgc);
  154. RET_STATUS SetTgc6(int nTgc);
  155. RET_STATUS SetTgc7(int nTgc);
  156. RET_STATUS SetTgc8(int nTgc);
  157. void OnFPDCallback(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  158. void NotifyXWindowOn();
  159. void NotifyXWindowOff();
  160. bool GetOnlyHaveFpd();//获取环境中是否只有平板这一个真实设备的配置项
  161. //int GetGainExposureNum();//获取gain校正曝光总次数
  162. private:
  163. bool LoadConfig();
  164. void SendTemperatureValue(float fValue);
  165. void SendWifiValue(int nValue);
  166. void SendBatteryValue(int nValue);
  167. string MakeImageHead(IMAGE_VIEW_TYPE Type);
  168. RET_STATUS AddFrameWithRawHead(IMAGE_VIEW_TYPE Type, unsigned char* pFrameBuff, DWORD FrameSize);
  169. bool OnProcessPreviewImage(unsigned char* pRawImage, DWORD FrameSize);
  170. bool OnProcessImage(unsigned char* pImage, DWORD FrameSize);
  171. void OnProcessTemperature(int nID, float fTemperature);
  172. void OnEventProcessConf(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  173. void OnEventProcessInfo(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  174. void OnEventProcessStatus(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  175. void OnEventProcessData(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  176. void OnEventProcessError(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  177. void OnEventProcessWarning(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
  178. protected:
  179. void RegisterCtrl(nsDetail::Dispatch* Dispatch);
  180. void RegisterAcq(nsDetail::Dispatch* Dispatch);
  181. void RegisterSync(nsDetail::Dispatch* Dispatch);
  182. void RegisterCalib(nsDetail::Dispatch* Dispatch);
  183. void RegisterOthers(nsDetail::Dispatch* Dispatch);
  184. void RegisterAutonumous(nsDetail::Dispatch* Dispatch);
  185. };
  186. } //end namespace CCOS::Dev::Detail::Detector