#pragma once #include "IExamHandler.h" namespace DIOS::Dev::Detail::MachineryECOM { class ResetHandler : public IExamHandler { public: ResetHandler(); ~ResetHandler(); public: virtual void OnModelLoaded(IMotionModelManager *modelManager) override; virtual void OnCoordinatesLoaded(IPositionManager *coordinates) override; virtual RET_STATUS OnReset(DOF_MECH mech) override; virtual RET_STATUS OnCenterAdjust(DOF_MECH mech) override; virtual RET_STATUS OnSelectExamMode(const char *pExamKey) override; virtual RET_STATUS OnSetTechParamsInfo(ResDataObject &pParam) 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 OnMotionEvent(const std::string &motionEventName) override; virtual void OnHandSwitchGearFirstPressed() override; virtual void OnHandSwitchGearFirstReleased() override; virtual void OnTubeAngleLowLimitPos() override; virtual void OnTubeAngleHighLimitPos() override; virtual void OnTubeHeightLowLimitPos() override; virtual void OnTubeHeightHighLimitPos() override; virtual void OnTubeAngleLeaveLowLimitPos()override; virtual void OnTubeAngleLeaveHighLimitPos()override; virtual void OnTubeHeightLeaveLowLimitPos()override; virtual void OnTubeHeightLeaveHighLimitPos()override; virtual void OnTubeAngleEncoderZPos() override; virtual void OnTubeHeightEncoderZPos() override; virtual void OnTubeHorizontalLeftLimitPos() override; virtual void OnTubeHorizontalRightLimitPos() override; virtual void OnTubeHorizontalLeaveLeftLimitPos() override; virtual void OnTubeHorizontalLeaveRightLimitPos() override; virtual void OnTubeHorizontalEncoderZPos() override; virtual void OnExit() override; private: void ChangeMotionModelStage(const std::string& stageName); void DoOnTubeAngleLandmarkPos(); void DoOnTubHeightLandmarkPos(); void DoStartReset(); void OnMotionEventTubeAngleStop(); void OnMotionEventTubeHeightStop(); void OnMotionEventMotionStoped(); void OnJudgeResetFinished(); BOOL IsMovingEnable(); void DoStartTubeHorizontalReset(); void DoOnTubeHorizontalLandMarkPos(); void OnMotionEventTubeHorizontalStop(); void DoTubeAligntoDetector(); private: BOOL m_modelLoaded; BOOL m_useTubeHeightLandmarkAD; BOOL m_useTubeAngleLandmarkAD; BOOL m_useTubeHorizontalLandmarkAD; BOOL m_useHandSwitchControlReset; BOOL m_bRestWorking; BOOL m_isResetting; BOOL m_bStopAtLowLimitPos; std::string m_currentWaitingTubeAngeStage; std::string m_currentWaitingTubeHeightStage; std::string m_currentWaitingTubeHorizontalStage; int m_ResetFinishedAxisCount; IPositionManager *m_postionManager; IMotionModelManager *m_modelManager; }; }