#pragma once #include #include "ResDataObject.h" #include "DriverConfigInfo.hpp" #include "DIOS.Dev.IODevice.Detail.hpp" #include "DIOS.Dev.IODevice.hpp" using namespace DIOS; using namespace DIOS::Dev; namespace nDev = DIOS::Dev; namespace nsDetail = DIOS::Dev::Detail; //#ifndef DIOSDEVMACHINERYMODEL_EXPORTS //#ifdef _WIN64 //#ifdef _DEBUG //#pragma comment(lib, "DIOS.Dev.Machinery.ModelX64D.lib") //#else //#pragma comment(lib, "DIOS.Dev.Machinery.ModelX64.lib") //#endif //#else //#ifdef _DEBUG //#pragma comment(lib, "DIOS.Dev.Machinery.ModelD.lib") //#else //#pragma comment(lib, "DIOS.Dev.Machinery.Model.lib") //#endif //#endif //#endif #ifdef DIOSDEVMACHINERYMODEL_EXPORTS #define _DIOSDEVMACHINERYMODEL_API __declspec(dllexport) #else #define _DIOSDEVMACHINERYMODEL_API __declspec(dllimport) #endif namespace DIOS::Dev::Detail::MachineryECOM { static const char* MachineryDriverGUID = "{515D79B6-9243-4D9A-8F01-88183B9BCC07}"; static const char* MachineryUnitGUID = "{E4FF71F5-ED97-41FE-969F-BAE349D54FC2}"; enum EXAM_MODE { EXM_ERROR = -1, EXM_SINGLE = 0, EXM_DUALENERGY, EXM_STITCH, EXM_AEC, EXM_HDR, EXM_GAIN, EXM_OFFSET, EXM_TOMO, EXM_MAMO_MANUAL, EXM_MAMO_SEMIAUTO, EXM_MAMO_AUTOMATIC, EXM_MAMO_AUTOFILTER, EXM_MAMO_TOMOSEMIAUTO, EXM_MAMO_TOMOAUTOMATIC, EXM_MODE_MAX }; const std::string EXAMMODE_SINGLE = ("Single"); const std::string EXAMMODE_STITCH = ("Stitch"); const std::string EXAMMODE_TOMO = ("TOMO"); namespace AttrKey { static const char* MachineryReady = "MachineryReady"; static const char* MachineryAlignStatus = "MachineryAlignStatus"; static const char* MachineryCurrentExamMode = "MachineryCurrentExamMode"; static const char* MachineryProjectionNumber = "MachineryProjectionNumber"; static const char* MachineryTID = "MachineryTID"; static const char* MachinerySID = "MachinerySID"; static const char* MachineryScanAngle = "MachineryScanAngle"; static const char* MachineryScanDirection = "MachineryScanDirection"; static const char* MachineryScanGeometry = "MachineryScanGeometry"; static const char* MachineryHandSwitchState = "HandSwitchState"; static const char* MachineryTomoMotionLimitation = "MachineryTomoMotionLimitation"; } namespace ActionKey { static const char* MachineryFramePrep = "MachineryFramePrep"; static const char* MachineryFrameReady = "MachineryFrameReady"; static const char* MachineryFrameAcq = "MachineryFrameAcq"; static const char* MachineryFrameStart = "MachineryFrameStart"; static const char* MachineryFrameIn = "MachineryFrameIn"; static const char* MachineryFrameEnd = "MachineryFrameEnd"; static const char* MachineryFramePost = "MachineryFramePost"; static const char* MachineryFrameError = "MachineryFrameError"; static const char* MachinerySeqError = "MachinerySeqError"; static const char* MachinerySeqEnd = "MachinerySeqEnd"; static const char* MachinerySetExpMode = "MachinerySetExpMode"; static const char* MachinerySetWorkstation = "MachinerySetWorkstation"; static const char* MachinerySetTechParamsInfo = "MachinerySetTechParamsInfo"; static const char* MachinerySetFrameRate = "MachinerySetFrameRate"; static const char* MachineryReset = "MachineryRESET"; static const char* MachineryGetReadyState = "MachineryGetReadyState"; static const char* MachineryEnterCalibration = "MachineryEnterCalibration"; static const char* MachineryExitCalibration = "MachineryExitCalibration"; static const char* MachineryCalMotionTubeLineV = "MachineryCalMotionTubeLineV"; static const char* MachineryCalMotionTubeAngleRotate = "MachineryCalMotionTubeAngleRotate"; static const char* MachineryCalMotionTubeAngleFindeAxisZ = "MachineryCalMotionTubeAngleFindeAxisZ"; static const char* MachineryCalGetADofTubeLineV = "MachineryCalGetADofTubeLineV"; static const char* MachineryCalGetADofDetector = "MachineryCalGetADofDetector"; static const char* MachineryCalGetADofTubeAngle = "MachineryCalGetADofTubeAngle"; static const char* MachineryCalGetEncoderofTubeLineV = "MachineryCalGetEncoderofTubeLineV"; static const char* MachineryCalGetEncoderOfTubeAngle = "MachineryCalGetEncoderOfTubeAngle"; static const char* MachineryCalSaveParamsofTubeLiveV = "MachineryCalSaveParamsofTubeLiveV"; static const char* MachineryCalSaveParamsofTubeAngle = "MachineryCalSaveParamsofTubeAngle"; static const char* MachineryCalSaveParamsofDetector = "MachineryCalSaveParamsofDetector"; static const char* MachineryCalSaveEncoderCorrectonofTubeLiveV = "MachineryCalSaveEncoderCorrectonofTubeLiveV"; static const char* MachineryCalSetADLimitationofEncoder = "MachineryCalSetADLimitationofEncoder"; static const char* MachinerySetSvoStatus = "MachinerySetSvoStatus"; static const char* MachineryAutoADCalibration = "MachineryAutoADCalibration"; static const char* MachineryCenterAdjust = "MachineryCenterAdjust"; static const char* MachineryQueryAlignStatus = "MachineryQueryAlignStatus"; static const char* MachineryGetSEQResource = "MachineryGetSEQResource"; static const char* MachineryEnterMechnicalSelfTest = "MachineryEnterMechnicalSelfTest"; static const char* MachineryExitMechnicalSelfTest = "MachineryExitMechnicalSelfTest"; static const char* MachineryStartMechnicalSelfTest = "MachineryStartMechnicalSelfTest"; static const char* MachineryParkingTo = "MachineryParkingTo"; static const char* MachineryActiveTubeAngleZAxisClear = "MachineryActiveTubeAngleZAxisClear"; static const char* MachineryCancelTubeAngleZAxisClear = "MachineryCancelTubeAngleZAxisClear"; static const char* MachineryActiveTubeHeightZAxisClear = "MachineryActiveTubeHeightZAxisClear"; static const char* MachineryCancelTubeHeightZAxisClear = "MachineryCancelTubeHeightZAxisClear"; static const char* MachineryTubeAngleRotateToZAxis = "MachineryTubeAngleRotateToZAxis"; static const char* MachineryTubeHeightMoveToZAxis = "MachineryTubeHeightMoveToZAxis"; static const char* MachineryForceStopAllMotion = "MachineryForceStopAllMotion"; static const char* MachineryGetTomoResult = "MachineryGetTomoResult"; static const char* MachineryRecalculateTomoMotionParam = "MachineryRecalculateTomoMotionParam"; static const char* MachineryCalMotionTubeLineH = "MachineryCalMotionTubeLineH"; static const char* MachineryCalGetADofTubeLineH = "MachineryCalGetADofTubeLineH"; static const char* MachineryCalGetEncoderofTubeLineH = "MachineryCalGetEncoderofTubeLineH"; static const char* MachineryCalGetADofHorizontalDetector = "MachineryCalGetADofHorizontalDetector"; static const char* MachineryCalSaveParamsofTubeLiveH = "MachineryCalSaveParamsofTubeLiveH"; static const char* MachineryCalSaveParamsofDetectorHorizontal = "MachineryCalSaveParamsofDetectorHorizontal"; static const char* MachinerySetSvoStatusTubeH = "MachinerySetSvoStatusTubeH"; static const char* MachineryCalSaveResetLowPosition = "MachineryCalSaveResetLowPosition"; static const char* MachineryCalSaveResetEcoderZeroPosition = "MachineryCalSaveResetEcoderZeroPosition"; static const char* MachineryCalGetResetPosParam = "MachineryCalGetResetPosParam"; } class MachineryDriverModel : public DIOS::Dev::IODriver { public: MachineryDriverModel(); ~MachineryDriverModel(); virtual std::string GetGUID() const; protected: std::list m_ConfigInfo; }; class MachineryECOMDriver; template class IODriverWithSCF; class CollimatorUnit: public IOLogicUnit { public: CollimatorUnit(); CollimatorUnit(MachineryECOMDriver* pMachineryDriver); virtual ~CollimatorUnit(); public: virtual RET_STATUS SetCollimatorSize(WORD xsize, WORD ysize) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SetCollimatorSID(WORD sid) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SetCollimatorFilter(WORD pParams) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SetCollimatorAngle(WORD pParams) { return RET_STATUS::RET_SUCCEED; }; protected: MachineryECOMDriver* m_pMachineryDriver; }; enum HANDSWITCH_STATUS { HSW_FIRST_DOWN, HSW_FIRST_UP, HSW_SECOND_DOWN, HSW_SECOND_UP, }; class ExposureSwitchUnit : public IOLogicUnit { public: ExposureSwitchUnit(); ExposureSwitchUnit(MachineryECOMDriver* pMachineryDriver); virtual ~ExposureSwitchUnit(); public: virtual nDev::RET_STATUS HSWNotify_FirstLevelUp() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS HSWNotify_FirstLevelDown() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS HSWNotify_SecondLevelUp() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS HSWNotify_SecondLevleDown() { return RET_STATUS::RET_SUCCEED; }; public: ResDataObject GetMachineryHandSwtichState(); protected: BaseJsonDataObject* m_bOneHSWStatus;//Sync status BaseJsonDataObject* m_bTwoHSWStatus;//Sync status MachineryECOMDriver* m_pMachineryDriver; ResDataObject m_MachineryHandSwtichState; }; class MotionControlUnit : public IOLogicUnit { public: MotionControlUnit(); MotionControlUnit(MachineryECOMDriver* pMachineryDriver); virtual ~MotionControlUnit(); public: virtual nDev::RET_STATUS FramePrep() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS FrameReady() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS FrameStart() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS FrameAcq() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS FrameIn() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS FrameEnd() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS FramePost() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS FrameError() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS SeqError() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS SeqEnd() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS SetWorkStation(const char* pWorkStation) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS SetExpMode(const char* pExpMode) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS Reset() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS StartMove() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS StopMove() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS SetFrameRate(FLOAT frameRate) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS SetTechParamsInfo(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CenterAdjust(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS QueryAlignStatus(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual bool GetMachineryReadyState() { return true; }; virtual int GetMachineryTomoMotionLimitationState() { return 0; }; virtual nDev::RET_STATUS NotifyMachineryReadyState(bool bMachineryReady) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS NotifyMachineryAlignStatus(bool bSystemAlign) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS NotifyMachineryTechParams(float tid, float sid, int project, float angle, int direction, std::string geometry) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS EnterCalibration() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalMotionTubeLineV(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalMotionTubeAngleRotate(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalMotionTubeAngleFindeAxisZ(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetADofTubeLineV(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetADofDetector(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetADofTubeAngle(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveParamsofTubeLiveV(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveParamsofTubeAngle(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveParamsofDetector(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetEncoderofTubeLineV(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetEncoderofTubeAngle(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveEncoderCorrectonofTubeLiveV(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSetADLimitationofEncoder(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS SetSvoStatus(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS AutoADCalibration(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS ExitCalibration() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS EnterMechnicalSelfTest() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS ExitMechnicalSelfTest() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS StartSelfTest(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS ParkingTo(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS ActiveTubeAngleZAxisClear() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CancelTubeAngleZAxisClear() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS ActiveTubeHeightZAxisClear() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CancelTubeHeightZAxisClear() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS TubeAngleRotateToZAxis() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS TubeHeightMoveToZAxis() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS ForceStopAllMotion() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_StartTubeLineVMotion2Target(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_StopLineVMotion(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_TubeAngleRotate2Target(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_StopRotation(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_BindRotationEncoder(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_UnbindRotationEncoder(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_SystemInitial(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_TubeCenterAlign(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS MotionTest_Move2ParkingPosition(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS GetTomoResult(ResDataObject& resultAngle, ResDataObject& resultHeight) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS RecalculateTomoMotionParam() { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalMotionTubeLineH(ResDataObject& ParamIn) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetADofTubeLineH(ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetEncoderofTubeLineH(ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetADofHorizontalDetector(ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveParamsofTubeLiveH(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveParamsofDetectorHorizontal(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveResetLowPosition(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalSaveResetEcoderZeroPosition(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; virtual nDev::RET_STATUS CalGetResetPosParam(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; }; public: ResDataObject GetMachineryReadyStatus(); ResDataObject GetMachineryAlignStatus(); ResDataObject GetMachineryProjectionNumber(); ResDataObject GetMachineryTID(); ResDataObject GetMachinerySID(); ResDataObject GetMachineryScanAngle(); ResDataObject GetMachineryScanDirection(); ResDataObject GetMachineryScanGeometry(); ResDataObject GetMachineryTomoMotionLimitationStatus(); protected: MachineryECOMDriver* m_pMachineryDriver; ResDataObject m_ExamList; ResDataObject m_MachineryReady; ResDataObject m_MachineryAlignStatus; ResDataObject m_MachineryProjectionNumber; ResDataObject m_MachineryTID; ResDataObject m_MachinerySID; ResDataObject m_MachineryScanAngle; ResDataObject m_MachineryScanDirection; ResDataObject m_MachineryScanGeometry; ResDataObject m_MachineryTomoMotionLimitation; }; class MachineryModel { public: MachineryModel(); ~MachineryModel(); public: void SetCollimatorUnit(CollimatorUnit* pCollimatorUnit); void SetExposureSwitchUnit(ExposureSwitchUnit* pExposureSwitchUnit); void SetMotionControlUnit(MotionControlUnit* pMotionControlUnit); protected: virtual void Register(Dispatch* Dispatch); public: //nDev::RET_STATUS JSMachinerySelectExamMode(std::string in, std::string& out); //nDev::RET_STATUS JSMachinerySetExamInfo(std::string in, std::string& out); nDev::RET_STATUS JSMachinerySetExpMode(std::string in, std::string& out); nDev::RET_STATUS JSMachinerySetWorkstation(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFramePrep(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFrameReady(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFrameAcq(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFrameStart(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFrameIn(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFrameEnd(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFramePost(std::string in, std::string& out); nDev::RET_STATUS JSMachineryFrameError(std::string in, std::string& out); nDev::RET_STATUS JSMachinerySeqError(std::string in, std::string& out); nDev::RET_STATUS JSMachinerySeqEnd(std::string in, std::string& out); nDev::RET_STATUS JSMachinerySetTechParamsInfo(std::string in, std::string& out); nDev::RET_STATUS JSMachinerySetFrameRate(std::string in, std::string& out); nDev::RET_STATUS JSMachineryReset(std::string in, std::string& out); nDev::RET_STATUS JSMachineryGetReadyState(std::string in, std::string& out); nDev::RET_STATUS JSMachineryEnterCalibration(std::string in, std::string& out); nDev::RET_STATUS JSMachineryExitCalibration(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalMotionTubeLineV(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalMotionTubeAngleRotate(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalMotionTubeAngleFindeAxisZ(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetADofTubeLineV(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetADofDetector(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetADofTubeAngle(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetEncoderofTubeLineV(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetEncoderOfTubeAngle(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveParamsofTubeLiveV(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveParamsofTubeAngle(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveParamsofDetector(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveEncoderCorrectonofTubeLiveV(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSetADLimitationofEncoder(std::string in, std::string& out); nDev::RET_STATUS JSMachinerySetSvoStatus(std::string in, std::string& out); nDev::RET_STATUS JSMachineryAutoADCalibration(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCenterAdjust(std::string in, std::string& out); nDev::RET_STATUS JSMachineryQueryAlignStatus(std::string in, std::string& out); nDev::RET_STATUS JSMachineryGetSEQResource(std::string in, std::string& out); nDev::RET_STATUS JSMachineryEnterMechnicalSelfTest(std::string in, std::string& out); nDev::RET_STATUS JSMachineryExitMechnicalSelfTest(std::string in, std::string& out); nDev::RET_STATUS JSMachineryStartMechnicalSelfTest(std::string in, std::string& out); nDev::RET_STATUS JSMachineryParkingTo(std::string in, std::string& out); nDev::RET_STATUS JSMachineryActiveTubeAngleZAxisClear(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCancelTubeAngleZAxisClear(std::string in, std::string& out); nDev::RET_STATUS JSMachineryActiveTubeHeightZAxisClear(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCancelTubeHeightZAxisClear(std::string in, std::string& out); nDev::RET_STATUS JSMachineryTubeAngleRotateToZAxis(std::string in, std::string& out); nDev::RET_STATUS JSMachineryTubeHeightMoveToZAxis(std::string in, std::string& out); nDev::RET_STATUS JSMachineryForceStopAllMotion(std::string in, std::string& out); nDev::RET_STATUS JSMachineryGetTomoResult(std::string in, std::string& out); nDev::RET_STATUS JSMachineryRecalculateTomoMotionParam(std::string in, std::string& out); nDev::RET_STATUS JSGetMachineryReadyStatus(std::string& out); nDev::RET_STATUS JSGetMachineryAlignStatus(std::string& out); nDev::RET_STATUS JSGetMachineryProjectionNumber(std::string& out); nDev::RET_STATUS JSGetMachineryTID(std::string& out); nDev::RET_STATUS JSGetMachinerySID(std::string& out); nDev::RET_STATUS JSGetMachineryScanAngle(std::string& out); nDev::RET_STATUS JSGetMachineryScanDirection(std::string& out); nDev::RET_STATUS JSGetMachineryScanGeometry(std::string& out); nDev::RET_STATUS JSGetMachineryHandSwitchState(std::string& out); nDev::RET_STATUS JSGetMachineryTomoMotionLimitationStatus(std::string& out); nDev::RET_STATUS JSMachineryCalMotionTubeLineH(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetADofTubeLineH(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetEncoderofTubeLineH(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetADofHorizontalDetector(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveParamsofTubeLiveH(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveParamsofDetectorHorizontal(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveResetLowPosition(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalSaveResetEcoderZeroPosition(std::string in, std::string& out); nDev::RET_STATUS JSMachineryCalGetResetPosParam(std::string in, std::string& out); private: using funcInvokeMotionInterface = std::function ; void ResObjectToJson(ResDataObject obj, std::string& out); protected: CollimatorUnit* m_pUnitCollimator; ExposureSwitchUnit* m_pUnitExposureSwitch; MotionControlUnit* m_pUnitMotionControl; ResDataObject GetDataObj(string in); }; }