CCOS.Dev.Generator.Mould.hpp 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. #pragma once
  2. #include <string>
  3. #include "DriverConfigInfo.hpp"
  4. #include "Generator.BasicMoulds.hpp"
  5. #include "CCOS.Dev.IODevice.Detail.hpp"
  6. //#include "Logger.temp.h"
  7. namespace nsDetail = CCOS::Dev::Detail;
  8. #define _CCOSDEVGENDEVICEMOULD_API
  9. namespace CCOS::Dev::Detail::Generator
  10. {
  11. //获取日志配置路径
  12. _CCOSDEVGENDEVICEMOULD_API string GetProcessDirectory();
  13. std::string GetElfNoteVersion(const std::string& filename);
  14. //获取配置文件中指定模块的版本号
  15. _CCOSDEVGENDEVICEMOULD_API bool GetVersion(string& version, void* hMyModule);
  16. _CCOSDEVGENDEVICEMOULD_API bool GetVersion(string& version, ResDataObject& config);
  17. _CCOSDEVGENDEVICEMOULD_API bool GetVersion(string& version);
  18. _CCOSDEVGENDEVICEMOULD_API void TransJsonText(ResDataObject& config);
  19. //-----------------------------------------------------------------------------
  20. // DoseUnit
  21. //-----------------------------------------------------------------------------
  22. class _CCOSDEVGENDEVICEMOULD_API DoseUnit : public IOLogicUnit
  23. {
  24. public:
  25. DoseUnit() {};
  26. virtual ~DoseUnit() {};
  27. public:
  28. //设备参数
  29. std::unique_ptr<WORKSTATIONMould> m_WS;
  30. std::unique_ptr<GENHANDSWITCHMould> m_Handswitch;
  31. std::unique_ptr<TUBEINFOMould> m_TubeInfo;//add by wxx for demand574
  32. std::unique_ptr<TUBETARGETMATERIALMould> m_TubeTargetMaterial;
  33. std::unique_ptr<TUBEANGLEMould> m_TubeAngle;
  34. std::unique_ptr<TUBEHEATMould> m_HE;
  35. std::unique_ptr<GENSYNSTATEMould> m_GenSynState;
  36. std::unique_ptr<GENSTATEMould> m_GenState;
  37. std::unique_ptr<BATTERYCHARGSTATEMould> m_BatteryChargeState;
  38. std::unique_ptr<BATTERYPOWERSTATEMould> m_BatteryPowerState; //add by wxx for DEL项目补充V2del上的属性
  39. std::unique_ptr<REFERENCEAIRKERMAMould> m_ReferenceAirKerma;
  40. //静态参数
  41. std::unique_ptr<KVMould> m_KV;
  42. std::unique_ptr<MAMould> m_MA;
  43. std::unique_ptr<MSMould> m_MS;
  44. std::unique_ptr<MASMould> m_MAS;
  45. std::unique_ptr<TECHMODEMould> m_Techmode;
  46. std::unique_ptr<FOCUSMould> m_Focus;
  47. std::unique_ptr<AECFIELDMould> m_AECField;
  48. std::unique_ptr<AECFILMMould> m_AECFilm;
  49. std::unique_ptr<AECDENSITYMould> m_AECDensity;
  50. std::unique_ptr<GENHEATMould> m_GenHE;
  51. std::unique_ptr<POSTKVMould> m_PostKV;
  52. std::unique_ptr<POSTMAMould> m_PostMA;
  53. std::unique_ptr<POSTMSMould> m_PostMS;
  54. std::unique_ptr<POSTMASMould> m_PostMAS;
  55. std::unique_ptr<TOTALEXPNUMMould> m_GenTotalExpNumber;
  56. std::unique_ptr<TOTALACQTIMESMould> m_GenTotalAcqTimes;
  57. std::unique_ptr<TUBECOOLTIMEMould> m_GenTubeCoolWaitTimes;
  58. std::unique_ptr<TUBEOVERLOADNUMMould> m_GenTubeOverLoadNumber;
  59. std::unique_ptr<CUREXPNUMMould> m_GenCurrentExpNumber;
  60. std::unique_ptr<EXPMODEMould> m_ExpMode;
  61. std::unique_ptr<EXAMMODEMould> m_EXAMMode;
  62. std::unique_ptr<FRAMERATEMould> m_FrameRate;
  63. std::unique_ptr<MODALITYMould> m_Modality;
  64. std::unique_ptr<KVLISTMould> m_KVList;
  65. std::unique_ptr<MASLISTMould> m_mAsList;
  66. float m_FocusSmall{ 0 };
  67. float m_FocusLarge{ 1 };
  68. //动态参数
  69. std::unique_ptr<FLUKVMould> m_FLKV;
  70. std::unique_ptr<FLUMAMould> m_FLMA;
  71. std::unique_ptr<FLUMSMould> m_FLMS;
  72. std::unique_ptr<FLAccTimeMould> m_FLAccTime;//透视累计时间
  73. std::string m_FLAccTimeUnit;//透视累计时间单位
  74. std::unique_ptr<FLUIntTimeMould> m_FLIntTime;//脉冲周期时间
  75. std::unique_ptr<PPSMould> m_PPS;//帧率
  76. std::unique_ptr<FLUModeMould> m_FLMode;//透视模式: 0-非透视, 1-连续,2-脉冲,3-高剂量连续,4-高剂量脉冲
  77. std::unique_ptr<FLUABSStatusMould> m_ABSStatus;//ABS状态: 0-ABS关闭, 1-ABS启用(KV only), 2 - ABS启用(KV/mA)
  78. std::unique_ptr<FLUMagMould> m_MagSize;//fluoro mag 0 to 3 - sets Mag size, ASCII character for 255 - Mag selection disabled
  79. std::unique_ptr<FLUDoseLevelMould> m_DoseLevel;//剂量模式,DOSE_LEVEL_LOW = 0, DOSE_LEVEL_NORMAL = 1, DOSE_LEVEL_HIGH = 2 ,后来由于需要分开cine的dose level和 透视的dose level 互不影响,所以约定 10以后的值 给cine 使用。
  80. std::unique_ptr<FLUCurveMould> m_Curve;//ABS曲线 0 = OFF, 1-3 = curve enabled
  81. //cine
  82. std::unique_ptr<FLUCineKVMould> m_CineFLKV;//
  83. std::unique_ptr<FLUCineMAMould> m_CineFLMA;//
  84. std::unique_ptr<FLUCineMSMould> m_CineFLMS;//
  85. };
  86. //-----------------------------------------------------------------------------
  87. // GeneratorMould
  88. //-----------------------------------------------------------------------------
  89. namespace nDev = CCOS::Dev;
  90. class _CCOSDEVGENDEVICEMOULD_API GeneratorMould
  91. {
  92. public:
  93. GeneratorMould ();
  94. ~GeneratorMould ();
  95. protected:
  96. virtual void Register(Dispatch* Dispatch);
  97. virtual void RegisterOther (Dispatch* Dispatch); // 子类可能希望注册更多的
  98. virtual void RegisterAEC(Dispatch* Dispatch);
  99. virtual void RegisterExpEnable(Dispatch* Dispatch);
  100. virtual void RegisterGeneratortoSyncStatus(Dispatch* Dispatch);
  101. virtual void RegisterRAD(Dispatch* Dispatch);
  102. virtual void RegisterFluoro(Dispatch* Dispatch);
  103. protected:
  104. //设备方法
  105. virtual RET_STATUS Reset() = 0;
  106. virtual RET_STATUS SetWS(const std::string value) = 0;
  107. virtual RET_STATUS SetGenSynState(int value) = 0;
  108. virtual RET_STATUS SetGenState(int value) = 0;
  109. virtual RET_STATUS SetExpEnable() = 0;
  110. virtual RET_STATUS SetExpDisable() = 0;
  111. virtual RET_STATUS QueryHE(int& value) = 0;
  112. virtual RET_STATUS SetExpMode(std::string value) = 0;
  113. virtual RET_STATUS SetFrameRate(float frameRate) = 0;
  114. virtual RET_STATUS SetEXAMMode(std::string value) = 0;
  115. virtual RET_STATUS SetCollimatorLight(unsigned short value) { return RET_STATUS::RET_SUCCEED; };//不要设置为纯虚,否则所有子类都得改
  116. virtual RET_STATUS ActiveSyncMode(_tSyncModeArgs value) { return RET_STATUS::RET_SUCCEED; };
  117. virtual RET_STATUS SetGenCurrentSMState(const std::string value);
  118. virtual RET_STATUS SimulateError(const std::string value) { return RET_STATUS::RET_SUCCEED; };
  119. //点片
  120. virtual RET_STATUS IncKV () = 0;
  121. virtual RET_STATUS DecKV () = 0;
  122. virtual RET_STATUS IncKVL();//add by wxx for task226:减少现有模块改造所以不写成纯虚
  123. virtual RET_STATUS DecKVL();
  124. virtual RET_STATUS SetKV (float value) = 0;
  125. virtual RET_STATUS IncMA () = 0;
  126. virtual RET_STATUS DecMA () = 0;
  127. virtual RET_STATUS IncMAL();//add by wxx for task226
  128. virtual RET_STATUS DecMAL();
  129. virtual RET_STATUS SetMA (float value) = 0;
  130. virtual RET_STATUS IncMS () = 0;
  131. virtual RET_STATUS DecMS () = 0;
  132. virtual RET_STATUS IncMSL();//add by wxx for task226
  133. virtual RET_STATUS DecMSL();
  134. virtual RET_STATUS SetMS (float value) = 0;
  135. virtual RET_STATUS IncMAS () = 0;
  136. virtual RET_STATUS DecMAS () = 0;
  137. virtual RET_STATUS IncMASL();//add by wxx for task226
  138. virtual RET_STATUS DecMASL();
  139. virtual RET_STATUS SetMAS (float value) = 0;
  140. virtual RET_STATUS SetTechmode (int value) = 0;
  141. virtual RET_STATUS SetFocus (int value) = 0;
  142. virtual RET_STATUS SetAECDensity (int value) = 0;
  143. virtual RET_STATUS IncAECDensity();//add by wxx for bug5681
  144. virtual RET_STATUS DecAECDensity();
  145. virtual RET_STATUS SetAECField (int value) = 0;
  146. virtual RET_STATUS SetAECFilm (int value) = 0;
  147. virtual RET_STATUS QueryPostKV(float& value) = 0;
  148. virtual RET_STATUS QueryPostMA(float& value) = 0;
  149. virtual RET_STATUS QueryPostMS(float& value) = 0;
  150. virtual RET_STATUS QueryPostMAS(float& value) = 0;
  151. virtual RET_STATUS SetAPR (const _tAPRArgs & t) = 0;
  152. virtual RET_STATUS SetAPRArray(vector<_tAPRArgs>& APRarray);
  153. //透视
  154. virtual RET_STATUS IncFluKV(); //透视KV调节
  155. virtual RET_STATUS DecFluKV();
  156. virtual RET_STATUS SetFluKV(float value);
  157. virtual RET_STATUS IncFluMA(); //透视MA调节
  158. virtual RET_STATUS DecFluMA();
  159. virtual RET_STATUS SetFluMA(float value);
  160. virtual RET_STATUS IncFluMS(); //透视MS调节
  161. virtual RET_STATUS DecFluMS();
  162. virtual RET_STATUS SetFluMS(float value);
  163. virtual RET_STATUS SetPPS(float frameRate); //脉冲透视帧率调节
  164. virtual RET_STATUS INCPPS();
  165. virtual RET_STATUS DECPPS();
  166. virtual RET_STATUS SetPluseWidth(float fplusewidth); //设置脉宽
  167. virtual RET_STATUS SetABSMode(int nMode); //设置自动亮度调节(ABS)模式
  168. virtual RET_STATUS SetABSCurve(int curveNum); //ABS曲线调节
  169. virtual RET_STATUS IncABSCurve();
  170. virtual RET_STATUS DecABSCurve();
  171. virtual RET_STATUS SetABSValue(float fABSValue);
  172. virtual RET_STATUS SetABSTargetEXI(float fEXIValue);
  173. virtual RET_STATUS SetAPF(const _tAPFArgs& t); //一次性设置透视参数
  174. virtual float GetFluIntTimer(); //获取透视周期时间
  175. virtual float GetFluAccTimer(); //获取透视曝光累计时间
  176. virtual RET_STATUS ResetFluTimer(int ntype); //清空透视曝光累计时间
  177. virtual RET_STATUS SetFluPre(int bPrepare); //设置透视预备阶段使能
  178. virtual RET_STATUS SetFluEXP(int bPrepare); //设置透视曝光阶段使能
  179. virtual RET_STATUS SetFLFMode(std::string value); //设置透视模式
  180. virtual RET_STATUS SetFluMAG(int nsize); //设置MG:0 to 3 - sets Mag size, ASCII character for 255 - Mag selection disabled
  181. virtual RET_STATUS DisableMAG();
  182. virtual RET_STATUS SetFluDoseLever(int nlever); //设置透视剂量等级( 0,1,2 )
  183. virtual RET_STATUS SetHalfDose(int nlever); //设置透视半价剂量
  184. virtual RET_STATUS TransferRadCurve(int ncurve); //点片KV跟随透视,0-3 Set curve 0:disable
  185. protected:
  186. DoseUnit m_DoseUnit;
  187. };
  188. }
  189. namespace CCOS::Dev::Detail::Generator
  190. {
  191. class _CCOSDEVGENDEVICEMOULD_API DriverMould : public CCOS::Dev::IODriver
  192. {
  193. public:
  194. DriverMould ();
  195. ~DriverMould ();
  196. virtual std::string GetGUID () const;
  197. virtual string GetConnectDLL(string& ConfigFileName);
  198. virtual ResDataObject GetConnectParam(string& ConfigFileName);
  199. protected:
  200. std::list <ConfigInfo> m_ConfigInfo;
  201. };
  202. }