#pragma once #include "workcmd.h" #include "PlatformXY.h" #include "EnumDirection.h" //移动XY 平台 class CWorkCmdMovePlatformXY :public CWorkCmd { public: CWorkCmdMovePlatformXY(); virtual ~CWorkCmdMovePlatformXY(void); virtual bool Excute(); virtual void WirteLog(); void SetMoveOrder(int n){m_MoveOrder = n;}; void MoveToTargetPt(Dbxy MovePt,Dbxy TargetPt); void MoveByDis(double MoveDis,DIRECTION MoveDir); void MoveByPulseCnt(int PulseCnt,DIRECTION MoveDir); void InWorkState(bool b = true){m_Work = b;};//当前处于工作状态 void NotCheckIniState(){m_bCheckIniState = false;}; private: bool m_Work;//是否在工作(false 表示空移),主要是电机速度不一样 //点对点的移动方式 Dbxy m_MovePt;//平台坐标的理论点(PLATFORM_COORD) Dbxy m_TargetPt;//理论点移动的目标点(PLATFORM_COORD) int m_MoveOrder;//移动顺序 0:按长度决定(默认) 1:X 轴先移动 2:Y 轴先移动 (主要为了避免有的设备撞到平台) //距离和方向的移动方式 bool m_bMoveByDir;//是否通过方向距离来移动平台 double m_MoveDis;//移动距离 DIRECTION m_MoveDir;//移动方向 //按脉冲移动 bool m_bMoveByPulse;//是否通过方向脉冲个数来移动平台 int m_PulseCnt; bool m_bCheckIniState;//是否检查初始化状态 };