#pragma once #include "motorcontrol.h" #include "MotionInfo_Axis.h" class AFX_EXT_CLASS CMotorControl_Simulation : public CMotorControl { public: CMotorControl_Simulation(int nIndex, DWORD dwPeriod=100,int nThreadCount = 1); virtual ~CMotorControl_Simulation(void); public: // CMotorControl virtual int Connect(const CMotorControlInfo* pControlInfo); virtual void Disconnect(); virtual BOOL ReadAddressValue(int nAddress, long &nValue); virtual BOOL WriteAddressValue(int nAddress, long nValue); virtual BOOL ReadAddressValue(int nAddress, float &fValue); virtual BOOL WriteAddressValue(int nAddress, float fValue); virtual BOOL ReadAddressValue(int nAddress, double &dValue); virtual BOOL WriteAddressValue(int nAddress, double dValue); virtual void IMT2P_RunThreadProcess(const CMotionData& motionData); protected: virtual BOOL ReadAxisPosition(float *pAxisPos, int nAxisCount); virtual BOOL ReadAxisStatus(long *pAxisStatus, int nAxisCount); virtual BOOL ReadThetaAxisPosition( float& fAxisPos); virtual BOOL ReadThetaAxisStatus(long& nAxisStatus); virtual BOOL ReadAddressValue(long nAddress, long *pArrayData, int nArrayCount); virtual BOOL WriteAddressValue(long nAddress, long *pArrayData, int nArrayCount); virtual BOOL ReadAddressValue(long nAddress, float *pArrayData, int nArrayCount); virtual BOOL WriteAddressValue(long nAddress, float *pArrayData, int nArrayCount); public: // common virtual BOOL CommonSetAutoStop(); // axis virtual BOOL AxisManualGo(int nAxisIdx, double dPosition); virtual BOOL AxisJogPlus(int nAxisIdx); virtual BOOL AxisJogMinus(int nAxisIdx); virtual BOOL AxisJogStop(int nAxisIdx); virtual BOOL AxisManualGoSpeed(int nAxisIdx, double dSpeed); virtual BOOL AxisJogSpeed(int nAxisIdx, double dSpeed); virtual BOOL AxisManualGoAccel(int nAxisIdx, int nAccel); // gantry virtual BOOL GantryManualGo(int nGantryIdx, const VectorDouble& vectorPos); virtual BOOL GantryManualGo(int nGantryIdx, const VectorDouble& vectorPos, int nMoveType); virtual BOOL GantryManualGo(int nGantryIdx, double dPosX, double dPosY); //Theta Motor virtual BOOL AxisThetaManualGo(double dPosition); virtual BOOL AxisThetaJogPlus(); virtual BOOL AxisThetaJogMinus(); virtual BOOL AxisThetaJogStop(); // review virtual BOOL GantryAutoGo(int nGantryIdx, const VectorDouble& vectorPosX, const VectorDouble& vectorPosY, BOOL bCommand=FALSE); protected: virtual void Process_AxisManualGo(const CMotionData& motionData); // For Simulation Thread virtual void Process_JogGo(const CMotionData& motionData); // For Simulation Thread virtual void Process_GantryGo(const CMotionData& motionData); // For Simulation Thread virtual void Process_AutoGo(const CMotionData& motionData); // For Simulation Thread CMotionInfo_Axis* GetMotionInfo_Axis(int nAxisIndex); float* GetCurAxisPosition(int nAxisIndex); float* GetCurAxisVelocity(int nAxisIndex); long* GetCurAxisStatus(int nAxisIndex); protected: CMotionInfo_Axis *m_pMotionInfo_Axis; long *m_pCurAxisStatus; float *m_pCurAxisPosition; float *m_pCurAxisVelocity; CMotionInfo_Axis m_MotionInfo_ThetaAxis; long m_lCurThetaAxisStatus; float m_fCurThetaAxisPosition; float m_fCurThetaAxisVelocity; };