You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
2.2 KiB
C++

#pragma once
#include <functional>
#include <vector>
class _declspec(dllexport) IGugaoDriver {
public:
using OnAxisMoveSafeCallBack = std::function<bool(int iAxisId, double dTargetPos)>;
using OnAxisPrevHomeCallBack = std::function<bool(int iAxisId)>;
using OnAxisAfterHomeCallBack = std::function<bool(int iAxisId)>;
using OnSetIoSafeCallBack = std::function<bool(int iIoIndex, unsigned char iIoData)>;
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<int>& axisIdVec) = 0;
virtual bool CloseCard(std::vector<int>& 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;
};