#pragma once
#include "CAxis.h"
#include "ICoord.h"
#include <string>
#include <memory>
#include <vector>

#ifdef C_COORD_EXPORTS
#define C_COORD_DLL_API __declspec(dllexport)
#else
#define C_COORD_DLL_API //__declspec(dllimport)
#endif

class C_COORD_DLL_API CCoord
{
private:
	string m_strCoordName;
	bool m_bIsInitSuccess;
	ICoord* m_pCoord = nullptr;
	bool    m_bEnable;               //�˿ؿ���ֹ/����
public:
	CCoord();
	LONG Init(string name, ICoord* pCoord);
	string GetName() { return m_strCoordName; };
	LONG Sync(UINT iTimeOut);

	LONG MoveTo(SPEED speed, double dX,double dY);
	LONG MoveTo(SPEED speed, double dX, double dY,double dZ);
	LONG MoveTo(SPEED speed, double dX, double dY,double dZ,double dR);

	LONG MoveTo(SPEED speed, XY_DOUBLE_STRUCT pos);
	LONG MoveTo(SPEED speed, X_Y_Z_STRUCT pos);
	LONG MoveTo(SPEED speed, X_Y_Z_R_STRUCT pos);

	LONG MoveTo(SPEED speed, std::vector<XY_DOUBLE_STRUCT> pos);
	LONG MoveTo(SPEED speed, std::vector<X_Y_Z_STRUCT> pos);
	LONG MoveTo(SPEED speed, std::vector<X_Y_Z_R_STRUCT> pos);
};