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.
TwoLaserHead-PushJig/LaiPuLaser/WorkCmdMovePlatformXY.h

38 lines
1.4 KiB
C++

#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;//是否检查初始化状态
};