#pragma once #include "ICalibrationHandler.h" namespace DIOS::Dev::Detail::MachineryECOM { class CalibrationHandler : public ICalibrationHandler { public: CalibrationHandler(); ~CalibrationHandler(); public: virtual void OnModelLoaded(IMotionModelManager *modelManager) override; virtual void OnCoordinatesLoaded(IPositionManager *coordinates) override; virtual RET_STATUS OnSelectExamMode(const char *pExamKey) override; virtual RET_STATUS OnSetTechParamsInfo(ResDataObject &pParam) override; virtual void OnMotionEvent(const std::string &motionEventName) override; virtual RET_STATUS OnStopMech() override; virtual RET_STATUS OnStartMove(DOF_MECH mech, int nOrientation) override; virtual RET_STATUS OnStopMove(DOF_MECH mech) override; virtual void OnTubeAngleEncoderZPos()override; virtual void OnTubeHeightEncoderZPos()override; virtual RET_STATUS OnMoveTubeHeight(ResDataObject &ParamIn) override; virtual RET_STATUS OnRotateTubeAngle(ResDataObject &ParamIn) override; virtual RET_STATUS OnGetTubeHeightAD(ResDataObject &ParamOut)override; virtual RET_STATUS OnGetTubeAngleAD(ResDataObject &ParamOut) override; virtual RET_STATUS OnGetDetectorHeightAD(ResDataObject &ParamOut) override; virtual RET_STATUS OnGetTubeHeightEncoder(ResDataObject &ParamOut) override; virtual RET_STATUS OnGetTubeAngleEncoder(ResDataObject &ParamOut) override; virtual RET_STATUS OnGetDetectorHeightEncoder(ResDataObject &ParamOut) override; virtual RET_STATUS OnActiveTubeAngleZAxisClear() override; virtual RET_STATUS OnCancleTubeAngleZAxisClear() override; virtual RET_STATUS OnActiveTubeHeightZAxisClear() override; virtual RET_STATUS OnCancelTubeHeightZAxisClear() override; virtual RET_STATUS OnTubeAngleRotateToZAxis() override; virtual RET_STATUS OnTubeHeightMoveToZAxis() override; virtual RET_STATUS OnSwitchSvoStatus(ResDataObject &ParamIn) override; virtual RET_STATUS OnAutoCalibrationAD(ResDataObject &ParamIn) override; virtual RET_STATUS OnSaveTubeHeightADCalibrationResult(ResDataObject &ParamIn, ResDataObject &pParamOut) override; virtual RET_STATUS OnSaveTubeAngleADCalibrationResult(ResDataObject &ParamIn, ResDataObject &pParamOut) override; virtual RET_STATUS OnSaveDetectorADCalibrationResult(ResDataObject &ParamIn, ResDataObject &pParamOut) override; virtual RET_STATUS OnMoveTubeHorizontal(ResDataObject& ParamIn) override; virtual RET_STATUS OnGetTubeHorizontalAD(ResDataObject& ParamOut)override; virtual RET_STATUS OnGetTubeHorizontalEncoder(ResDataObject& ParamOut) override; virtual RET_STATUS OnGetDetectorHorizontalAD(ResDataObject& ParamOut) override; virtual RET_STATUS OnSaveTubeHorizontalADCalibrationResult(ResDataObject& ParamIn, ResDataObject& pParamOut) override; virtual RET_STATUS OnSaveDetectorHorizontalADCalibrationResult(ResDataObject& ParamIn, ResDataObject& pParamOut) override; virtual RET_STATUS OnSaveResetLowPosition(ResDataObject& ParamIn, ResDataObject& pParamOut) override; virtual RET_STATUS OnSaveResetEncorderZeroPosition(ResDataObject& ParamIn, ResDataObject& pParamOut) override; virtual RET_STATUS OnGetResetPosition(ResDataObject& ParamIn, ResDataObject& pParamOut) override; private: bool ParsePhysicsAndADMapParams(ResDataObject &ParamIn, std::vector &physical, std::vector &ads); void ChangeAutoCalibrationADToNextStage(int offset); BOOL IsMovingEnable(); private: BOOL m_modelLoaded; IMotionModelManager *m_modelManager; }; }