GenUnitLogic.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #pragma once
  2. /*========================================================================================
  3. 单元逻辑设备的功能:
  4. 1、实现各参数的设置(仅提供功能接口);
  5. 2、实现在各种应用(DR、RF、超声)下的dose管理;
  6. 3、实现在各种检查(双能、拼接、软件AEC、AED等)下的状态管理;
  7. ==========================================================================================*/
  8. #ifndef GENUNITLOGIC_EXPORTS
  9. #ifdef _WIN64
  10. #ifdef _DEBUG
  11. #pragma comment(lib, "GenUnitLogicX64D.lib")
  12. #else
  13. #pragma comment(lib, "GenUnitLogicX64.lib")
  14. #endif
  15. #else
  16. #ifdef _DEBUG
  17. #pragma comment(lib, "GenUnitLogicD.lib")
  18. #else
  19. #pragma comment(lib, "GenUnitLogic.lib")
  20. #endif
  21. #endif
  22. #endif
  23. #define PARAM_IN_TYPE
  24. #define ABSTRACT2UNIT 0
  25. #define UNIT2ABSTRACT 1
  26. #ifdef GENUNITLOGIC_EXPORTS
  27. #define GENUNITLOGIC_API __declspec(dllexport)
  28. #else
  29. #define GENUNITLOGIC_API __declspec(dllimport)
  30. #endif
  31. #include "LogicDevice.h"
  32. #include "DIOSLogicDeviceStructure.h"
  33. class GENUNITLOGIC_API GenUnitLogic : public LogicDevice
  34. {
  35. //1.setexaminfo,把后补检查集传下来.
  36. //2.SelectExamMode,指定检查类型.(这里传递的是DX or RF,内部要读取对应的具体检查,并设置)
  37. //3.因为之前的定义没有考虑RF场景,所以旧版ExamMode和新版ExamMode基本上不匹配.
  38. /*这件事情要等到RF实际投入的时候重新考虑,目前只考虑DX情况*/
  39. ResDataObject *m_ExamInfo; // {{DX:Stitch} with {RF:ContinueSerial} or only one}
  40. ResDataObject *m_CurrentExamMode;//DX or RF
  41. BaseJsonDataObject<int> *m_SysSequence;//SysSequence
  42. BaseJsonDataObject<int> *m_AppMode;//application mode:RF/dr
  43. BaseJsonDataObject<int> *m_ExamMode;//Exam mode:dual energy\stitching
  44. //BaseJsonDataObject<int> *m_WorkStation;//WorkStation
  45. BaseJsonDataObject<string> *m_WorkStation;//WorkStation
  46. BaseJsonDataObject<int> *m_Techmode;//Techmode
  47. BaseJsonDataObject<int> *m_Focus;//Focus
  48. BaseJsonDataObject<float> *m_KV;//KV
  49. BaseJsonDataObject<float> *m_MA;//mA
  50. BaseJsonDataObject<float> *m_MS;//MS
  51. BaseJsonDataObject<float> *m_MAS;//MAS
  52. BaseJsonDataObject<float> *m_AECDensity;//AECDensity
  53. BaseJsonDataObject<int> *m_AECField;// AECField
  54. BaseJsonDataObject<int> *m_AECFilm;// AECFilm
  55. BaseJsonDataObject<float> *m_PostKV;//PostKV
  56. BaseJsonDataObject<float> *m_PostMA;//PostMA
  57. BaseJsonDataObject<float> *m_PostMS;//PostMS
  58. BaseJsonDataObject<float> *m_PostMAS;//PostMAS
  59. BaseJsonDataObject<int> *m_ExposureStatus;// Exposure Status
  60. BaseJsonDataObject<int> *m_TotalExposureStep;// Total Exposure Step:Dual,Stitch,used multiple exposure.
  61. BaseJsonDataObject<int> *m_CurExposureStep;// Exposure Step:Dual,Stitch,used multiple exposure.
  62. //mech etc
  63. BaseJsonDataObject<int> *m_MechTotalSize;//total size
  64. BaseJsonDataObject<int> *m_MechCurrentPos;//current pos
  65. BaseJsonDataObject<int> *m_MechStepSize;//next step size
  66. BaseJsonDataObject<float> *m_ExposedDose;//
  67. BaseJsonDataObject<int> *m_Reset;//Reset 0: fail; 1: successful,
  68. BaseJsonDataObject<string> *m_Error;// Exposure Status
  69. BaseJsonDataObject<string> *m_Warning;//Reset 0: fail; 1: successful,
  70. BaseJsonDataObject<float> *m_PosReplyKV;//ReplyKV
  71. BaseJsonDataObject<float> *m_PosReplyMA;//ReplyMA
  72. BaseJsonDataObject<float> *m_PosReplyMS;//ReplyMS
  73. BaseJsonDataObject<float> *m_NosReplyKV;//ReplyKV
  74. BaseJsonDataObject<float> *m_NosReplyMA;//ReplyMA
  75. BaseJsonDataObject<float> *m_NosReplyMS;//ReplyMS
  76. BaseJsonDataObject<float> *m_FKV;//FLKV
  77. BaseJsonDataObject<float> *m_FMA;//FLmA
  78. BaseJsonDataObject<int> *m_ABS;
  79. BaseJsonDataObject<int> *m_EXO;
  80. BaseJsonDataObject<int> *m_TubeHeat;//HE
  81. BaseJsonDataObject<int> *m_DAP;//DAP(mGycm^2)
  82. BaseJsonDataObject<int> *m_PositionCode;//
  83. public:
  84. GenUnitLogic(void);
  85. virtual ~GenUnitLogic(void);
  86. //get device type
  87. virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType);
  88. //get device resource
  89. virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource);
  90. //register system status
  91. virtual RET_STATUS SYSTEM_CALL GetSEQResource(ResDataObject PARAM_OUT *pDeviceStatus);
  92. //register system status
  93. virtual RET_STATUS SYSTEM_CALL GetDoseResource(ResDataObject PARAM_OUT *pDeviceStatus);
  94. //ResourceCommand Request In and Response Out
  95. virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest,ResDataObject PARAM_OUT *pResponse);
  96. //notify to lower layer
  97. virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd);
  98. //errors,warnings
  99. void SetErrorInfo(int errCode ,char *pErrInfo);
  100. void SetWarningInfo(int warningCode,char *pWarningInfo);
  101. //Data Access
  102. virtual int DATA_ACTION GetValue(float PARAM_OUT &Value, int PARAM_IN_TYPE ParamType);
  103. virtual int DATA_ACTION SetValue(float PARAM_IN Value, int PARAM_IN_TYPE ParamType);
  104. virtual int DATA_ACTION GetValue(int PARAM_OUT &Value, int PARAM_IN_TYPE ParamType);
  105. virtual int DATA_ACTION SetValue(int PARAM_IN Value, int PARAM_IN_TYPE ParamType);
  106. virtual int DATA_ACTION SetAPR(APRStruct APRParam);
  107. virtual RET_STATUS DATA_ACTION EnterExp();
  108. virtual int DATA_ACTION AcceptExp(ResDataObject& Workstation);
  109. virtual int DATA_ACTION ImageReady(ResDataObject& ImageStatus);
  110. virtual int DATA_ACTION ExitExp();
  111. virtual int DATA_ACTION ReadRealExploseStatus(ResDataObject& WorkStation);
  112. //留给子系统的接口,没有用就不要管.
  113. //跟SetExamMode不同,它设置的是ExamInfo中的ExamMode,然后把ExamMode转为SetExamMode.
  114. const char *GetCurrentExamMode();
  115. ResDataObject& GetCurrentExamInfo();
  116. virtual RET_STATUS DATA_ACTION SetExamInfo(ResDataObject PARAM_IN& pParam);
  117. virtual RET_STATUS DATA_ACTION SelectExamMode(const char *pAppKey);
  118. virtual RET_STATUS SetStudyInfo(ResDataObject PARAM_IN& pParam);
  119. virtual RET_STATUS SetTechParamsInfo(ResDataObject PARAM_IN& pParam);
  120. //Actions
  121. virtual int DEVICE_ACTION IncParam(int nAdjustStep, int PARAM_IN_TYPE ParamType);
  122. virtual int DEVICE_ACTION DecParam(int nAdjustStep, int PARAM_IN_TYPE ParamType);
  123. virtual int DEVICE_ACTION IncParamL(int nAdjustStepL, int PARAM_IN_TYPE ParamType);
  124. virtual int DEVICE_ACTION DecParamL(int nAdjustStepL, int PARAM_IN_TYPE ParamType);
  125. //Support function
  126. virtual bool DEVICE_SUPPORT Support_IncParam(int PARAM_IN_TYPE ParamType);
  127. virtual bool DEVICE_SUPPORT Support_DecParam(int PARAM_IN_TYPE ParamType);
  128. virtual bool DEVICE_SUPPORT Support_IncParamL(int PARAM_IN_TYPE ParamType);
  129. virtual bool DEVICE_SUPPORT Support_DecParamL(int PARAM_IN_TYPE ParamType);
  130. virtual bool DEVICE_SUPPORT Support_SetValue(int PARAM_IN_TYPE ParamType);
  131. virtual bool DEVICE_SUPPORT Support_GetValue(int PARAM_IN_TYPE ParamType);
  132. bool DEVICE_SUPPORT Support_SeqPrepState(void);
  133. bool DEVICE_SUPPORT Support_SeqReadyState(void);
  134. bool DEVICE_SUPPORT Support_FramePrepState(void);
  135. bool DEVICE_SUPPORT Support_FrameReadyState(void);
  136. bool DEVICE_SUPPORT Support_FrameStartState(void);
  137. bool DEVICE_SUPPORT Support_FrameInState(void);
  138. bool DEVICE_SUPPORT Support_FramePostState(void);
  139. bool DEVICE_SUPPORT Support_FrameEndState(void);
  140. bool DEVICE_SUPPORT Support_SeqPostState(void);
  141. RET_STATUS WaitforWS(DWORD nWaitTime = 3000); //Wait For Workstation
  142. //virtual int SetExploreStatus(const char* szKey, USHORT Value);
  143. HANDLE m_hGenWSEvent;
  144. private:
  145. string Type2Char(int nMessageType);
  146. string SwitchWorkStation(int& nWorkStationType, string strWS, int nSwitchType); //0: from char* to int; 1: from int to char*
  147. bool CheckExamSame(ResDataObject* OriExam, ResDataObject* CurExam);
  148. };