#pragma once #define ACTION_TIMEOUT_MECH (20000) using namespace DIOS::Dev; namespace DIOS::Dev::Detail::MachineryECOM { class LogicDeviceMechTomo : public MotionControlUnit { public: LogicDeviceMechTomo(MachineryECOMDriver* pMachineryDriver); ~LogicDeviceMechTomo(); public: virtual nDev::RET_STATUS FramePrep(); virtual nDev::RET_STATUS FrameReady(); virtual nDev::RET_STATUS FrameStart(); virtual nDev::RET_STATUS FrameAcq(); virtual nDev::RET_STATUS FrameIn(); virtual nDev::RET_STATUS FrameEnd(); virtual nDev::RET_STATUS FramePost(); virtual nDev::RET_STATUS FrameError(); virtual nDev::RET_STATUS SeqError(); virtual nDev::RET_STATUS SeqEnd(); //virtual nDev::RET_STATUS SelectExamMode(const char* pExamKey); //virtual nDev::RET_STATUS SetExamInfo(ResDataObject &ParamIn); virtual nDev::RET_STATUS SetExpMode(const char* pExpMode); virtual nDev::RET_STATUS SetWorkStation(const char* pWorkStation); virtual nDev::RET_STATUS StartMove(); virtual nDev::RET_STATUS StopMove(); virtual nDev::RET_STATUS SetFrameRate(FLOAT frameRate); virtual nDev::RET_STATUS SetTechParamsInfo(ResDataObject &ParamIn); virtual nDev::RET_STATUS CenterAdjust(ResDataObject &ParamIn); virtual nDev::RET_STATUS QueryAlignStatus(ResDataObject &ParamIn); virtual bool GetMachineryReadyState(); virtual int GetMachineryTomoMotionLimitationState(); virtual nDev::RET_STATUS NotifyMachineryReadyState(bool bMachineryReady); virtual nDev::RET_STATUS NotifyMachineryAlignStatus(bool bSystemAlign); virtual nDev::RET_STATUS NotifyMachineryTechParams(float tid, float sid, int project, float angle, int direction, std::string geometry); virtual nDev::RET_STATUS EnterCalibration(); virtual nDev::RET_STATUS CalMotionTubeLineV(ResDataObject &ParamIn); virtual nDev::RET_STATUS CalMotionTubeAngleRotate(ResDataObject &ParamIn); virtual nDev::RET_STATUS CalMotionTubeAngleFindeAxisZ(ResDataObject &ParamIn); virtual nDev::RET_STATUS CalGetADofTubeLineV(ResDataObject &ParamOut); virtual nDev::RET_STATUS CalGetADofDetector(ResDataObject &ParamOut); virtual nDev::RET_STATUS CalGetADofTubeAngle(ResDataObject &ParamOut); virtual nDev::RET_STATUS CalSaveParamsofTubeLiveV(ResDataObject &ParamIn, ResDataObject &ParamOut); virtual nDev::RET_STATUS CalSaveParamsofTubeAngle(ResDataObject &ParamIn, ResDataObject &ParamOut); virtual nDev::RET_STATUS CalSaveParamsofDetector(ResDataObject &ParamIn, ResDataObject &ParamOut); virtual nDev::RET_STATUS CalGetEncoderofTubeLineV(ResDataObject &ParamOut); virtual nDev::RET_STATUS CalGetEncoderofTubeAngle(ResDataObject &ParamOut); virtual nDev::RET_STATUS CalSaveEncoderCorrectonofTubeLiveV(ResDataObject &ParamIn, ResDataObject &ParamOut); virtual nDev::RET_STATUS CalSetADLimitationofEncoder(ResDataObject &ParamIn); virtual nDev::RET_STATUS SetSvoStatus(ResDataObject &ParamIn); virtual nDev::RET_STATUS AutoADCalibration(ResDataObject &ParamIn); virtual nDev::RET_STATUS ExitCalibration(); virtual nDev::RET_STATUS EnterMechnicalSelfTest(); virtual nDev::RET_STATUS ExitMechnicalSelfTest(); virtual nDev::RET_STATUS StartSelfTest(ResDataObject &ParamIn); virtual nDev::RET_STATUS ParkingTo(ResDataObject &ParamIn); virtual nDev::RET_STATUS ActiveTubeAngleZAxisClear(); virtual nDev::RET_STATUS CancelTubeAngleZAxisClear(); virtual nDev::RET_STATUS ActiveTubeHeightZAxisClear(); virtual nDev::RET_STATUS CancelTubeHeightZAxisClear(); virtual nDev::RET_STATUS TubeAngleRotateToZAxis(); virtual nDev::RET_STATUS TubeHeightMoveToZAxis(); virtual nDev::RET_STATUS ForceStopAllMotion(); virtual nDev::RET_STATUS MotionTest_StartTubeLineVMotion2Target(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_StopLineVMotion(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_TubeAngleRotate2Target(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_StopRotation(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_BindRotationEncoder(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_UnbindRotationEncoder(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_SystemInitial(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_TubeCenterAlign(ResDataObject &ParamIn); virtual nDev::RET_STATUS MotionTest_Move2ParkingPosition(ResDataObject &ParamIn); virtual nDev::RET_STATUS GetTomoResult(ResDataObject& resultAngle, ResDataObject& resultHeight); virtual nDev::RET_STATUS RecalculateTomoMotionParam(); virtual nDev::RET_STATUS CalMotionTubeLineH(ResDataObject& ParamIn); virtual nDev::RET_STATUS CalGetADofTubeLineH(ResDataObject& ParamOut); virtual nDev::RET_STATUS CalGetEncoderofTubeLineH(ResDataObject& ParamOut); virtual nDev::RET_STATUS CalGetADofHorizontalDetector(ResDataObject& ParamOut); virtual nDev::RET_STATUS CalSaveParamsofTubeLiveH(ResDataObject& ParamIn, ResDataObject& ParamOut); virtual nDev::RET_STATUS CalSaveParamsofDetectorHorizontal(ResDataObject& ParamIn, ResDataObject& ParamOut); virtual nDev::RET_STATUS CalSaveResetLowPosition(ResDataObject& ParamIn, ResDataObject& ParamOut); virtual nDev::RET_STATUS CalSaveResetEcoderZeroPosition(ResDataObject& ParamIn, ResDataObject& ParamOut); virtual nDev::RET_STATUS CalGetResetPosParam(ResDataObject& ParamIn, ResDataObject& ParamOut); private: EXAM_MODE m_Mode; private: }; }