GenUnitLogic.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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. typedef enum GenWorkStation_Type {
  34. GENUNIT_WS_TABLE,
  35. GENUNIT_WS_WALL,
  36. GENUNIT_WS_CONVENTIONAL,
  37. GENUNIT_WS_FREE,
  38. GENUNIT_WS_TOMO,
  39. GENUNIT_WS_TABLE_WALL,
  40. GENUNIT_WS_FREE2,
  41. }GENWORKSTATION_TYPE;
  42. class GENUNITLOGIC_API GenUnitLogic : public LogicDevice
  43. {
  44. //1.setexaminfo,把后补检查集传下来.
  45. //2.SelectExamMode,指定检查类型.(这里传递的是DX or RF,内部要读取对应的具体检查,并设置)
  46. //3.因为之前的定义没有考虑RF场景,所以旧版ExamMode和新版ExamMode基本上不匹配.
  47. /*这件事情要等到RF实际投入的时候重新考虑,目前只考虑DX情况*/
  48. ResDataObject *m_ExamInfo; // {{DX:Stitch} with {RF:ContinueSerial} or only one}
  49. ResDataObject *m_CurrentExamMode;//DX or RF
  50. BaseJsonDataObject<int> *m_SysSequence;//SysSequence
  51. BaseJsonDataObject<int> *m_AppMode;//application mode:RF/dr
  52. BaseJsonDataObject<int> *m_ExamMode;//Exam mode:dual energy\stitching
  53. //BaseJsonDataObject<int> *m_WorkStation;//WorkStation
  54. BaseJsonDataObject<string> *m_WorkStation;//WorkStation
  55. BaseJsonDataObject<int> *m_Techmode;//Techmode
  56. BaseJsonDataObject<int> *m_Focus;//Focus
  57. BaseJsonDataObject<float> *m_KV;//KV
  58. BaseJsonDataObject<float> *m_MA;//mA
  59. BaseJsonDataObject<float> *m_MS;//MS
  60. BaseJsonDataObject<float> *m_MAS;//MAS
  61. BaseJsonDataObject<float> *m_AECDensity;//AECDensity
  62. BaseJsonDataObject<int> *m_AECField;// AECField
  63. BaseJsonDataObject<int> *m_AECFilm;// AECFilm
  64. BaseJsonDataObject<float> *m_PostKV;//PostKV
  65. BaseJsonDataObject<float> *m_PostMA;//PostMA
  66. BaseJsonDataObject<float> *m_PostMS;//PostMS
  67. BaseJsonDataObject<float> *m_PostMAS;//PostMAS
  68. BaseJsonDataObject<int> *m_ExposureStatus;// Exposure Status
  69. BaseJsonDataObject<int> *m_TotalExposureStep;// Total Exposure Step:Dual,Stitch,used multiple exposure.
  70. BaseJsonDataObject<int> *m_CurExposureStep;// Exposure Step:Dual,Stitch,used multiple exposure.
  71. //mech etc
  72. BaseJsonDataObject<int> *m_MechTotalSize;//total size
  73. BaseJsonDataObject<int> *m_MechCurrentPos;//current pos
  74. BaseJsonDataObject<int> *m_MechStepSize;//next step size
  75. BaseJsonDataObject<float> *m_ExposedDose;//
  76. BaseJsonDataObject<int> *m_Reset;//Reset 0: fail; 1: successful,
  77. BaseJsonDataObject<string> *m_Error;// Exposure Status
  78. BaseJsonDataObject<string> *m_Warning;//Reset 0: fail; 1: successful,
  79. BaseJsonDataObject<float> *m_PosReplyKV;//ReplyKV
  80. BaseJsonDataObject<float> *m_PosReplyMA;//ReplyMA
  81. BaseJsonDataObject<float> *m_PosReplyMS;//ReplyMS
  82. BaseJsonDataObject<float> *m_NosReplyKV;//ReplyKV
  83. BaseJsonDataObject<float> *m_NosReplyMA;//ReplyMA
  84. BaseJsonDataObject<float> *m_NosReplyMS;//ReplyMS
  85. BaseJsonDataObject<float> *m_FKV;//FLKV
  86. BaseJsonDataObject<float> *m_FMA;//FLmA
  87. BaseJsonDataObject<int> *m_ABS;
  88. BaseJsonDataObject<int> *m_EXO;
  89. BaseJsonDataObject<int> *m_TubeHeat;//HE
  90. BaseJsonDataObject<int> *m_DAP;//DAP(mGycm^2)
  91. BaseJsonDataObject<int> *m_PositionCode;//
  92. ResDataObject *m_KVList;
  93. ResDataObject *m_MAList;
  94. ResDataObject *m_MSList;
  95. ResDataObject *m_MASList;
  96. public:
  97. GenUnitLogic(void);
  98. virtual ~GenUnitLogic(void);
  99. //get device type
  100. virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType);
  101. //get device resource
  102. virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource);
  103. //register system status
  104. virtual RET_STATUS SYSTEM_CALL GetSEQResource(ResDataObject PARAM_OUT *pDeviceStatus);
  105. //register system status
  106. virtual RET_STATUS SYSTEM_CALL GetDoseResource(ResDataObject PARAM_OUT *pDeviceStatus);
  107. //ResourceCommand Request In and Response Out
  108. virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest,ResDataObject PARAM_OUT *pResponse);
  109. //notify to lower layer
  110. virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd);
  111. //errors,warnings
  112. void SetErrorInfo(int errCode ,char *pErrInfo);
  113. void SetWarningInfo(int warningCode,char *pWarningInfo);
  114. //Data Access
  115. virtual int DATA_ACTION GetValue(float PARAM_OUT &Value, int PARAM_IN_TYPE ParamType);
  116. virtual int DATA_ACTION SetValue(float PARAM_IN Value, int PARAM_IN_TYPE ParamType);
  117. virtual int DATA_ACTION GetValue(int PARAM_OUT &Value, int PARAM_IN_TYPE ParamType);
  118. virtual int DATA_ACTION SetValue(int PARAM_IN Value, int PARAM_IN_TYPE ParamType);
  119. virtual int DATA_ACTION SetAPR(APRStruct APRParam);
  120. virtual RET_STATUS DATA_ACTION EnterExp();
  121. virtual int DATA_ACTION AcceptExp(ResDataObject& Workstation);
  122. virtual int DATA_ACTION ImageReady(ResDataObject& ImageStatus);
  123. virtual int DATA_ACTION ExitExp();
  124. virtual int DATA_ACTION ReadRealExploseStatus(ResDataObject& WorkStation);
  125. //留给子系统的接口,没有用就不要管.
  126. //跟SetExamMode不同,它设置的是ExamInfo中的ExamMode,然后把ExamMode转为SetExamMode.
  127. const char *GetCurrentExamMode();
  128. ResDataObject& GetCurrentExamInfo();
  129. virtual RET_STATUS DATA_ACTION SetExamInfo(ResDataObject PARAM_IN& pParam);
  130. virtual RET_STATUS DATA_ACTION SelectExamMode(const char *pAppKey);
  131. virtual RET_STATUS SetStudyInfo(ResDataObject PARAM_IN& pParam);
  132. virtual RET_STATUS SetTechParamsInfo(ResDataObject PARAM_IN& pParam);
  133. //Actions
  134. virtual int DEVICE_ACTION IncParam(int nAdjustStep, int PARAM_IN_TYPE ParamType);
  135. virtual int DEVICE_ACTION DecParam(int nAdjustStep, int PARAM_IN_TYPE ParamType);
  136. virtual int DEVICE_ACTION IncParamL(int nAdjustStepL, int PARAM_IN_TYPE ParamType);
  137. virtual int DEVICE_ACTION DecParamL(int nAdjustStepL, int PARAM_IN_TYPE ParamType);
  138. virtual int DEVICE_ACTION RefreshParameterList(const char* ParamType, float* List, int ListCount, float maxvalue, float minvalue);
  139. //Support function
  140. virtual bool DEVICE_SUPPORT Support_IncParam(int PARAM_IN_TYPE ParamType);
  141. virtual bool DEVICE_SUPPORT Support_DecParam(int PARAM_IN_TYPE ParamType);
  142. virtual bool DEVICE_SUPPORT Support_IncParamL(int PARAM_IN_TYPE ParamType);
  143. virtual bool DEVICE_SUPPORT Support_DecParamL(int PARAM_IN_TYPE ParamType);
  144. virtual bool DEVICE_SUPPORT Support_SetValue(int PARAM_IN_TYPE ParamType);
  145. virtual bool DEVICE_SUPPORT Support_GetValue(int PARAM_IN_TYPE ParamType);
  146. bool DEVICE_SUPPORT Support_SeqPrepState(void);
  147. bool DEVICE_SUPPORT Support_SeqReadyState(void);
  148. bool DEVICE_SUPPORT Support_FramePrepState(void);
  149. bool DEVICE_SUPPORT Support_FrameReadyState(void);
  150. bool DEVICE_SUPPORT Support_FrameStartState(void);
  151. bool DEVICE_SUPPORT Support_FrameInState(void);
  152. bool DEVICE_SUPPORT Support_FramePostState(void);
  153. bool DEVICE_SUPPORT Support_FrameEndState(void);
  154. bool DEVICE_SUPPORT Support_SeqPostState(void);
  155. RET_STATUS WaitforWS(DWORD nWaitTime = 3000); //Wait For Workstation
  156. //virtual int SetExploreStatus(const char* szKey, USHORT Value);
  157. HANDLE m_hGenWSEvent;
  158. private:
  159. string Type2Char(int nMessageType);
  160. string SwitchWorkStation(int& nWorkStationType, string strWS, int nSwitchType); //0: from char* to int; 1: from int to char*
  161. bool CheckExamSame(ResDataObject* OriExam, ResDataObject* CurExam);
  162. };