123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- #pragma once
- /*========================================================================================
- 单元逻辑设备的功能:
- 1、实现各参数的设置(仅提供功能接口);
- 2、实现在各种应用(DR、RF、超声)下的dose管理;
- 3、实现在各种检查(双能、拼接、软件AEC、AED等)下的状态管理;
- ==========================================================================================*/
- #ifndef GENUNITLOGIC_EXPORTS
- #ifdef _WIN64
- #ifdef _DEBUG
- #pragma comment(lib, "GenUnitLogicX64D.lib")
- #else
- #pragma comment(lib, "GenUnitLogicX64.lib")
- #endif
- #else
- #ifdef _DEBUG
- #pragma comment(lib, "GenUnitLogicD.lib")
- #else
- #pragma comment(lib, "GenUnitLogic.lib")
- #endif
- #endif
- #endif
- #define PARAM_IN_TYPE
- #define ABSTRACT2UNIT 0
- #define UNIT2ABSTRACT 1
- #ifdef GENUNITLOGIC_EXPORTS
- #define GENUNITLOGIC_API __declspec(dllexport)
- #else
- #define GENUNITLOGIC_API __declspec(dllimport)
- #endif
- #include "LogicDevice.h"
- #include "DIOSLogicDeviceStructure.h"
- typedef enum GenWorkStation_Type {
- GENUNIT_WS_TABLE,
- GENUNIT_WS_WALL,
- GENUNIT_WS_CONVENTIONAL,
- GENUNIT_WS_FREE,
- GENUNIT_WS_TOMO,
- GENUNIT_WS_TABLE_WALL,
- GENUNIT_WS_FREE2,
- }GENWORKSTATION_TYPE;
- class GENUNITLOGIC_API GenUnitLogic : public LogicDevice
- {
- //1.setexaminfo,把后补检查集传下来.
- //2.SelectExamMode,指定检查类型.(这里传递的是DX or RF,内部要读取对应的具体检查,并设置)
- //3.因为之前的定义没有考虑RF场景,所以旧版ExamMode和新版ExamMode基本上不匹配.
- /*这件事情要等到RF实际投入的时候重新考虑,目前只考虑DX情况*/
- ResDataObject *m_ExamInfo; // {{DX:Stitch} with {RF:ContinueSerial} or only one}
- ResDataObject *m_CurrentExamMode;//DX or RF
- BaseJsonDataObject<int> *m_SysSequence;//SysSequence
- BaseJsonDataObject<int> *m_AppMode;//application mode:RF/dr
- BaseJsonDataObject<int> *m_ExamMode;//Exam mode:dual energy\stitching
- //BaseJsonDataObject<int> *m_WorkStation;//WorkStation
- BaseJsonDataObject<string> *m_WorkStation;//WorkStation
- BaseJsonDataObject<int> *m_Techmode;//Techmode
- BaseJsonDataObject<int> *m_Focus;//Focus
- BaseJsonDataObject<float> *m_KV;//KV
- BaseJsonDataObject<float> *m_MA;//mA
- BaseJsonDataObject<float> *m_MS;//MS
- BaseJsonDataObject<float> *m_MAS;//MAS
- BaseJsonDataObject<float> *m_AECDensity;//AECDensity
- BaseJsonDataObject<int> *m_AECField;// AECField
- BaseJsonDataObject<int> *m_AECFilm;// AECFilm
- BaseJsonDataObject<float> *m_PostKV;//PostKV
- BaseJsonDataObject<float> *m_PostMA;//PostMA
- BaseJsonDataObject<float> *m_PostMS;//PostMS
- BaseJsonDataObject<float> *m_PostMAS;//PostMAS
- BaseJsonDataObject<int> *m_ExposureStatus;// Exposure Status
- BaseJsonDataObject<int> *m_TotalExposureStep;// Total Exposure Step:Dual,Stitch,used multiple exposure.
- BaseJsonDataObject<int> *m_CurExposureStep;// Exposure Step:Dual,Stitch,used multiple exposure.
- //mech etc
- BaseJsonDataObject<int> *m_MechTotalSize;//total size
- BaseJsonDataObject<int> *m_MechCurrentPos;//current pos
- BaseJsonDataObject<int> *m_MechStepSize;//next step size
- BaseJsonDataObject<float> *m_ExposedDose;//
- BaseJsonDataObject<int> *m_Reset;//Reset 0: fail; 1: successful,
- BaseJsonDataObject<string> *m_Error;// Exposure Status
- BaseJsonDataObject<string> *m_Warning;//Reset 0: fail; 1: successful,
- BaseJsonDataObject<float> *m_PosReplyKV;//ReplyKV
- BaseJsonDataObject<float> *m_PosReplyMA;//ReplyMA
- BaseJsonDataObject<float> *m_PosReplyMS;//ReplyMS
- BaseJsonDataObject<float> *m_NosReplyKV;//ReplyKV
- BaseJsonDataObject<float> *m_NosReplyMA;//ReplyMA
- BaseJsonDataObject<float> *m_NosReplyMS;//ReplyMS
- BaseJsonDataObject<float> *m_FKV;//FLKV
- BaseJsonDataObject<float> *m_FMA;//FLmA
- BaseJsonDataObject<int> *m_ABS;
- BaseJsonDataObject<int> *m_EXO;
- BaseJsonDataObject<int> *m_TubeHeat;//HE
- BaseJsonDataObject<int> *m_DAP;//DAP(mGycm^2)
- BaseJsonDataObject<int> *m_PositionCode;//
- ResDataObject *m_KVList;
- ResDataObject *m_MAList;
- ResDataObject *m_MSList;
- ResDataObject *m_MASList;
- public:
- GenUnitLogic(void);
- virtual ~GenUnitLogic(void);
- //get device type
- virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType);
- //get device resource
- virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource);
- //register system status
- virtual RET_STATUS SYSTEM_CALL GetSEQResource(ResDataObject PARAM_OUT *pDeviceStatus);
- //register system status
- virtual RET_STATUS SYSTEM_CALL GetDoseResource(ResDataObject PARAM_OUT *pDeviceStatus);
- //ResourceCommand Request In and Response Out
- virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest,ResDataObject PARAM_OUT *pResponse);
- //notify to lower layer
- virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd);
- //errors,warnings
- void SetErrorInfo(int errCode ,char *pErrInfo);
- void SetWarningInfo(int warningCode,char *pWarningInfo);
- //Data Access
- virtual int DATA_ACTION GetValue(float PARAM_OUT &Value, int PARAM_IN_TYPE ParamType);
- virtual int DATA_ACTION SetValue(float PARAM_IN Value, int PARAM_IN_TYPE ParamType);
- virtual int DATA_ACTION GetValue(int PARAM_OUT &Value, int PARAM_IN_TYPE ParamType);
- virtual int DATA_ACTION SetValue(int PARAM_IN Value, int PARAM_IN_TYPE ParamType);
- virtual int DATA_ACTION SetAPR(APRStruct APRParam);
- virtual RET_STATUS DATA_ACTION EnterExp();
- virtual int DATA_ACTION AcceptExp(ResDataObject& Workstation);
- virtual int DATA_ACTION ImageReady(ResDataObject& ImageStatus);
- virtual int DATA_ACTION ExitExp();
- virtual int DATA_ACTION ReadRealExploseStatus(ResDataObject& WorkStation);
- //留给子系统的接口,没有用就不要管.
- //跟SetExamMode不同,它设置的是ExamInfo中的ExamMode,然后把ExamMode转为SetExamMode.
- const char *GetCurrentExamMode();
- ResDataObject& GetCurrentExamInfo();
- virtual RET_STATUS DATA_ACTION SetExamInfo(ResDataObject PARAM_IN& pParam);
- virtual RET_STATUS DATA_ACTION SelectExamMode(const char *pAppKey);
- virtual RET_STATUS SetStudyInfo(ResDataObject PARAM_IN& pParam);
- virtual RET_STATUS SetTechParamsInfo(ResDataObject PARAM_IN& pParam);
- //Actions
- virtual int DEVICE_ACTION IncParam(int nAdjustStep, int PARAM_IN_TYPE ParamType);
- virtual int DEVICE_ACTION DecParam(int nAdjustStep, int PARAM_IN_TYPE ParamType);
- virtual int DEVICE_ACTION IncParamL(int nAdjustStepL, int PARAM_IN_TYPE ParamType);
- virtual int DEVICE_ACTION DecParamL(int nAdjustStepL, int PARAM_IN_TYPE ParamType);
- virtual int DEVICE_ACTION RefreshParameterList(const char* ParamType, float* List, int ListCount, float maxvalue, float minvalue);
- //Support function
- virtual bool DEVICE_SUPPORT Support_IncParam(int PARAM_IN_TYPE ParamType);
- virtual bool DEVICE_SUPPORT Support_DecParam(int PARAM_IN_TYPE ParamType);
- virtual bool DEVICE_SUPPORT Support_IncParamL(int PARAM_IN_TYPE ParamType);
- virtual bool DEVICE_SUPPORT Support_DecParamL(int PARAM_IN_TYPE ParamType);
- virtual bool DEVICE_SUPPORT Support_SetValue(int PARAM_IN_TYPE ParamType);
- virtual bool DEVICE_SUPPORT Support_GetValue(int PARAM_IN_TYPE ParamType);
- bool DEVICE_SUPPORT Support_SeqPrepState(void);
- bool DEVICE_SUPPORT Support_SeqReadyState(void);
- bool DEVICE_SUPPORT Support_FramePrepState(void);
- bool DEVICE_SUPPORT Support_FrameReadyState(void);
- bool DEVICE_SUPPORT Support_FrameStartState(void);
- bool DEVICE_SUPPORT Support_FrameInState(void);
- bool DEVICE_SUPPORT Support_FramePostState(void);
- bool DEVICE_SUPPORT Support_FrameEndState(void);
- bool DEVICE_SUPPORT Support_SeqPostState(void);
- RET_STATUS WaitforWS(DWORD nWaitTime = 3000); //Wait For Workstation
- //virtual int SetExploreStatus(const char* szKey, USHORT Value);
- HANDLE m_hGenWSEvent;
- private:
- string Type2Char(int nMessageType);
- string SwitchWorkStation(int& nWorkStationType, string strWS, int nSwitchType); //0: from char* to int; 1: from int to char*
- bool CheckExamSame(ResDataObject* OriExam, ResDataObject* CurExam);
- };
|