#pragma once // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MECH1D_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // MECH1D_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifndef MECH1D_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "Mech1DX64D.lib") #else #pragma comment(lib, "Mech1DX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "Mech1DD.lib") #else #pragma comment(lib, "Mech1D.lib") #endif #endif #endif #ifdef MECH1D_EXPORTS #define MECH1D_API __declspec(dllexport) #else #define MECH1D_API __declspec(dllimport) #endif #include "LogicDevice.h" #include "DIOSLogicDeviceStructure.h" typedef enum _MECH_1D_POS{ MECH_1D_START_POS, MECH_1D_RESET_POS, MECH_1D_END_POS, MECH_1D_CURRENT_POS, MECH_1D_TARGET_POS, MECH_1D_MOVING_DIR, MECH_1D_MOVING_STATUS,//移动,停止,出错 MECH_1D_STOP_PARAM,//事件:0 or 结束时间:ms MECH_1D_POS_MAX }MECH_1D_POS; #define M_1D_START_POS "1DSTARTPOS" #define M_1D_RESET_POS "1DRESTPOS" #define M_1D_END_POS "1DENDPOS" #define M_1D_CURRENT_POS "1DCURRENTPOS" #define M_1D_TARGET_POS "1DTARGETPOS" //移动,停止,出错 #define M_1D_MOVING_STATUS "1DMOVINGSTATUS" #define M_1D_STOP_PARAM "1DSTOPPARAM" class MECH1D_API Mech1D : public LogicDevice { public: //属性定义 //参数组 /* 类似如下. "RF":"Tomo":"1" "DX":"Tomo":"1" */ ResDataObject m_ExamList; ResDataObject m_CurrentExamMode; ResDataObject m_MachineryReady; ResDataObject m_AlignStatus; //机架 ResDataObject m_LinePos[MECH_1D_POS_MAX]; //球管 ResDataObject m_RotatePos[MECH_1D_POS_MAX]; //tomo执行结果 ResDataObject m_TomoResParams; public: Mech1D(void); virtual ~Mech1D(void); //get device type virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType); //get device resource virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource); //ResourceCommand Request In and Response Out virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest, ResDataObject PARAM_OUT *pResponse); //notify to lower layer virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd); virtual RET_STATUS SYSTEM_CALL GetSEQResource(ResDataObject PARAM_OUT *pDeviceResource); //for test virtual RET_STATUS DATA_ACTION MoveMech(FLOAT Pos); virtual RET_STATUS DATA_ACTION RotateMech(FLOAT Angle); virtual RET_STATUS DATA_ACTION ActionMech(FLOAT Pos, FLOAT Angle); virtual RET_STATUS DATA_ACTION BlindRotateMech(FLOAT Angle); //普通Action virtual RET_STATUS DATA_ACTION RESET(); virtual RET_STATUS DATA_ACTION StopMech(); //TOMO结果数组读取 /* P0:{ {0: 值},{1: 值},...} */ virtual RET_STATUS DATA_ACTION GetTomoResults(ResDataObject &resultAngle, ResDataObject &resultHeight); void OEM_IF AddTomoResult(FLOAT Angle); void OEM_IF ClearTomoResults(); public: virtual RET_STATUS DATA_ACTION SelectExamMode(const char *pExamKey); virtual RET_STATUS SetExamInfo(ResDataObject PARAM_IN& pParam); const char* OEM_IF GetExamType(); virtual RET_STATUS DATA_ACTION StartMove(); virtual RET_STATUS DATA_ACTION StopMove(); virtual RET_STATUS DATA_ACTION SetFrameRate(FLOAT frameRate); virtual RET_STATUS DATA_ACTION SetTechParamsInfo(ResDataObject PARAM_IN& techParam); virtual RET_STATUS DATA_ACTION CenterAdjust(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION QueryAlignStatus(ResDataObject PARAM_IN& ParamIn); virtual bool DATA_ACTION GetMachineryReadyState(); virtual RET_STATUS NotifyMachineryReadyState(bool bMachineryReady); virtual RET_STATUS NotifyMachineryAlignStatus(bool bSystemAlign); //状态机相关 virtual RET_STATUS DATA_ACTION FramePrep(); virtual RET_STATUS DATA_ACTION FrameReady(); virtual RET_STATUS DATA_ACTION FrameStart(); virtual RET_STATUS DATA_ACTION FrameAcq(); virtual RET_STATUS DATA_ACTION FrameIn(); virtual RET_STATUS DATA_ACTION FrameEnd(); virtual RET_STATUS DATA_ACTION FramePost(); //状态机异常 virtual RET_STATUS DATA_ACTION FrameError(); virtual RET_STATUS DATA_ACTION SeqError(); virtual RET_STATUS DATA_ACTION SeqEnd(); virtual bool DEVICE_SUPPORT Support_FramePrep(); virtual bool DEVICE_SUPPORT Support_FrameReady(); virtual bool DEVICE_SUPPORT Support_FrameStart(); virtual bool DEVICE_SUPPORT Support_FrameAcq(); virtual bool DEVICE_SUPPORT Support_FrameIn(); virtual bool DEVICE_SUPPORT Support_FrameEnd(); virtual bool DEVICE_SUPPORT Support_FramePost(); virtual bool DEVICE_SUPPORT Support_FrameError(); virtual bool DEVICE_SUPPORT Support_SeqError(); virtual bool DEVICE_SUPPORT Support_SeqEnd(); virtual RET_STATUS DATA_ACTION EnterCalibration(); virtual RET_STATUS DATA_ACTION CalMotionTubeLineV(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION CalMotionTubeAngleRotate(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION CalMotionTubeAngleFindeAxisZ(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION CalGetADofTubeLineV(ResDataObject PARAM_OUT& ParamOut); virtual RET_STATUS DATA_ACTION CalGetADofDetector(ResDataObject PARAM_OUT& ParamOut); virtual RET_STATUS DATA_ACTION CalGetADofTubeAngle(ResDataObject PARAM_OUT& ParamOut); virtual RET_STATUS DATA_ACTION CalSaveParamsofTubeLiveV(ResDataObject PARAM_IN& ParamIn, ResDataObject PARAM_OUT& pParamOut); virtual RET_STATUS DATA_ACTION CalSaveParamsofTubeAngle(ResDataObject PARAM_IN& ParamIn, ResDataObject PARAM_OUT& pParamOut); virtual RET_STATUS DATA_ACTION CalSaveParamsofDetector(ResDataObject PARAM_IN& ParamIn, ResDataObject PARAM_OUT& pParamOut); virtual RET_STATUS DATA_ACTION CalGetEncoderofTubeLineV(ResDataObject PARAM_OUT& ParamOut); virtual RET_STATUS DATA_ACTION CalGetEncoderofTubeAngle(ResDataObject PARAM_OUT& ParamOut); virtual RET_STATUS DATA_ACTION CalSaveEncoderCorrectonofTubeLiveV(ResDataObject PARAM_IN& ParamIn, ResDataObject PARAM_OUT& pParamOut); virtual RET_STATUS DATA_ACTION CalSetADLimitationofEncoder(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION SetSvoStatus(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION AutoADCalibration(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION ExitCalibration(); virtual RET_STATUS DATA_ACTION EnterMechnicalSelfTest(); virtual RET_STATUS DATA_ACTION ExitMechnicalSelfTest(); virtual RET_STATUS DATA_ACTION StartSelfTest(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION ParkingTo(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION ActiveTubeAngleZAxisClear(); virtual RET_STATUS DATA_ACTION CancelTubeAngleZAxisClear(); virtual RET_STATUS DATA_ACTION ActiveTubeHeightZAxisClear(); virtual RET_STATUS DATA_ACTION CancelTubeHeightZAxisClear(); virtual RET_STATUS DATA_ACTION TubeAngleRotateToZAxis(); virtual RET_STATUS DATA_ACTION TubeHeightMoveToZAxis(); virtual RET_STATUS DATA_ACTION ForceStopAllMotion(); virtual RET_STATUS DATA_ACTION MotionTest_StartTubeLineVMotion2Target(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_StopLineVMotion(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_TubeAngleRotate2Target(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_StopRotation(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_BindRotationEncoder(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_UnbindRotationEncoder(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_SystemInitial(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_TubeCenterAlign(ResDataObject PARAM_IN& ParamIn); virtual RET_STATUS DATA_ACTION MotionTest_Move2ParkingPosition(ResDataObject PARAM_IN& ParamIn); };