#pragma once #include "INaming.h" #include "INotifyEventListener.h" #include "IMotionModelHandler.h" #include "IPositionManager.h" #include "WorkstationNameDef.h" namespace DIOS::Dev::Detail::MachineryECOM { enum STATE_MACHINE_STATUS { SM_NONE = -1, SM_FRAMEPREP, SM_FRAMEREADY, SM_FRAMEACQ, SM_FRAMESTART, SM_FRAMEEND, SM_FRAMEPOST, SM_FRAMEERROR, SM_FRAMERECOVER, SM_SEQERROR, SM_SEQEND, }; enum HAND_SWITCH_STATUS { HS_NONE = -1, HS_GEAR_FIRST_PRESSED, HS_GEAR_FIRST_RELEASED, HS_GEAR_SECOND_PRESSED, HS_GEAR_SECOND_RELEASED, }; class IExamHandler : public INaming, public INotifyEventListener, public IMotionModelHandler { public: IExamHandler(); virtual ~IExamHandler(); public: virtual DIOS::Dev::RET_STATUS OnSelectExamMode(const char *pExamKey) = 0; virtual DIOS::Dev::RET_STATUS OnSetTechParamsInfo(ResDataObject &pParam) = 0; virtual DIOS::Dev::RET_STATUS OnReset(DOF_MECH mech); virtual DIOS::Dev::RET_STATUS OnCenterAdjust(DOF_MECH mech); virtual DIOS::Dev::RET_STATUS OnStopMech(); virtual DIOS::Dev::RET_STATUS OnStartMove(DOF_MECH mech, int nOrientation); virtual DIOS::Dev::RET_STATUS OnStopMove(DOF_MECH mech); virtual DIOS::Dev::RET_STATUS OnScanningSwitch(DOF_MECH mech); virtual DIOS::Dev::RET_STATUS OnWorkstationSwitch(const char* pWorkstation); virtual DIOS::Dev::RET_STATUS OnFramePrep(); virtual DIOS::Dev::RET_STATUS OnFrameReady(); virtual DIOS::Dev::RET_STATUS OnFrameAcq(); virtual DIOS::Dev::RET_STATUS OnFrameStart(); virtual DIOS::Dev::RET_STATUS OnFrameEnd(); virtual DIOS::Dev::RET_STATUS OnFramePost(); virtual DIOS::Dev::RET_STATUS OnFrameError(); virtual DIOS::Dev::RET_STATUS OnFrameRecover(); virtual DIOS::Dev::RET_STATUS OnSeqError(); virtual DIOS::Dev::RET_STATUS OnSeqEnd(); virtual DIOS::Dev::RET_STATUS OnSetFrameRate(FLOAT frameRate); virtual void OnExit(); protected: STATE_MACHINE_STATUS m_stateMachineStatus; BOOL m_bMachineMoving; string m_CurWS; }; }