#pragma once #include #include class _declspec(dllexport) IGugaoDriver { public: using OnAxisMoveSafeCallBack = std::function; using OnAxisPrevHomeCallBack = std::function; using OnAxisAfterHomeCallBack = std::function; using OnSetIoSafeCallBack = std::function; public: void RegisterAxisMoveSafeCallBack(OnAxisMoveSafeCallBack const& func) { m_onAxisMoveSafeFunc = func; } void RegisterAxisPrevHomeCallBack(OnAxisPrevHomeCallBack const& func) { m_onAxisPrevHomeFunc = func; } void RegisterAxisAfterHomeCallBack(OnAxisAfterHomeCallBack const& func) { m_AxisAfterHomeFunc = func; } void RegisterSetIoSageCallBack(OnSetIoSafeCallBack const& func) {m_onSetIoSafeFunc = func;} public: virtual bool OpenCard(std::vector& axisIdVec) = 0; virtual bool CloseCard(std::vector& axisIdVec) = 0; virtual int AbsMove(int iAxisId, int pulseTo1mm, double dPos, double dAcc, double dDec, double dMoveSpeed, bool bWaitFinished) = 0; virtual int WriteIO(short sSlaveNo, short sIoIndex, unsigned char ucValue) = 0; virtual int WriteAO(short sSlaveNo, short sIoIndex, short sValue) = 0; //ÉèÖÃÄ£ÄâÁ¿ virtual short ReadDo(short sSlaveNo, short sIoIndex) = 0; virtual unsigned char ReadDi(short sSlaveNo, short sIoIndex) = 0; virtual double GetCurPos(int iAxisId, int pulseTo1mm) = 0; virtual void stopMove(int iAxisId) = 0; virtual int home(int iAxisId, double dSearchSpeed, double iIndexSpeed, double sSearchAcc, short sModule) = 0; //״̬ÅÐ¶Ï virtual bool IsHome(int iAxisId) = 0; virtual bool IsHoming(int iAxisId) = 0; virtual bool IsMoveing(int iAxisId) = 0; virtual bool IsMoveEnd(int iAxisId) = 0; virtual bool IsAxisEnable(int iAxisId) = 0; virtual bool IsAxisError(int iAxisId) = 0; virtual bool GetAxisErrorCode(int iAxisId) = 0; virtual bool IsAxisPaslimit(int iAxisId) = 0; virtual bool isAxisNagLimit(int iAxisId) = 0; protected: OnAxisMoveSafeCallBack m_onAxisMoveSafeFunc = nullptr; OnAxisPrevHomeCallBack m_onAxisPrevHomeFunc = nullptr; OnAxisAfterHomeCallBack m_AxisAfterHomeFunc = nullptr; OnSetIoSafeCallBack m_onSetIoSafeFunc = nullptr; };