|
|
|
|
#pragma once
|
|
|
|
|
#include "Motor.h"
|
|
|
|
|
#include "EnumDirection.h"
|
|
|
|
|
#include "GlobalDefine.h"
|
|
|
|
|
#include "Module.h"
|
|
|
|
|
#include "Subject.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<F1BEB5BA><CDBC><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶯ<EFBFBD>IJ<EFBFBD><C4B2>ֶ<EFBFBD><D6B6><EFBFBD>ƽ̨
|
|
|
|
|
/*<2A><><EFBFBD><EFBFBD>ӳ<EFBFBD>䵽ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ԭ<CCA8><D4AD><EFBFBD><EFBFBD>
|
|
|
|
|
ƽ̨<EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>겻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
|
|
|
|
|
Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵m_Coord ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD>ĵѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬X <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//xy ƽ̨
|
|
|
|
|
class CPlatformXY : public CModule,public CSubject
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
CPlatformXY(CMotor &MotorX,CMotor &MotorY);
|
|
|
|
|
~CPlatformXY(void);
|
|
|
|
|
virtual MODULE GetModuleType(){return _PLATFORM_XY_PROP;};
|
|
|
|
|
virtual CMFCPropertyGridProperty *CreatGridProperty();
|
|
|
|
|
virtual void WriteWorkFileExt(vector<CLab> &LabVec);
|
|
|
|
|
virtual void ReadWorkFile(CLabVecRang &LabVecRang);
|
|
|
|
|
virtual void Draw(CDC* pDC);
|
|
|
|
|
virtual void ExportPar(ofstream *pFile);
|
|
|
|
|
virtual bool Move(bool bWork,Dbxy MovePt,Dbxy TargetPt,bool bSaveCoord = true);//<2F>ƶ<EFBFBD><C6B6><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(bSaveCoord <20><>ʾ<EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA>¼<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
public:
|
|
|
|
|
void SetCurPosOrigin();//<2F><><EFBFBD>õ<EFBFBD>ǰλ<C7B0><CEBB>Ϊƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
|
|
|
|
|
Dbxy GetCoord();//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ֵ(ƽ̨<C6BD><CCA8>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>XY <20>нǶ<D0BD>,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
Dbxy GetProductPoint(){return m_ProductPoint;};
|
|
|
|
|
bool MoveDistance(double dis,DIRECTION dir,bool bSaveCoord = true);//<2F>ƶ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>(bSaveCoord <20><>ʾ<EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA>¼<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
bool MovePulseCnt(int Cnt,DIRECTION dir);
|
|
|
|
|
int GetMoveDelay(){return m_MoveDelay;};
|
|
|
|
|
bool IsAtProductPoint();
|
|
|
|
|
void SetMoveOrder(int n){m_MoveOrder = n;};
|
|
|
|
|
void AdjustPlatformSpeed();
|
|
|
|
|
double GetWorkSpeed(){return m_WorkSpeed;};
|
|
|
|
|
void SetWorkSpeed(double s){m_WorkSpeed = s;}
|
|
|
|
|
double GetMoveSpeed(){return m_MoveSpeed;};
|
|
|
|
|
void SetMoveSpeed(double s){m_MoveSpeed = s;}
|
|
|
|
|
Dbxy GetMotorXYOnePulseDis();
|
|
|
|
|
bool IsMoveNeedDeviceIni(){return m_MoveNeedDeviceIni;};
|
|
|
|
|
void MoveToPt(Dbxy MovePt,Dbxy TargetPt);
|
|
|
|
|
void ManualMovePlatForm(bool bMoveByDis,double MoveDis,DIRECTION MoveDir);
|
|
|
|
|
void SetCurPosAsProductPt();
|
|
|
|
|
void MoveToWorkPt();
|
|
|
|
|
void MoveToOriginPt();
|
|
|
|
|
void IniPlat(bool bConfirm = true);
|
|
|
|
|
Dbxy GetManualMoveDis(){return m_ManualMoveDis;};
|
|
|
|
|
void ResetManualMoveDis();
|
|
|
|
|
bool IsUseManualMoveDis(){return m_bUseManualMoveDis;};
|
|
|
|
|
void SetbLockManualMoveDis(bool b){m_bLockManualMoveDis = b;};
|
|
|
|
|
bool IsbBresenhamAlgorithm(){return m_bBresenhamAlgorithm;};
|
|
|
|
|
bool GetbUseMoveRange(){return m_bUseMoveRange;};
|
|
|
|
|
void SetbUseMoveRange(bool b){m_bUseMoveRange = b;};
|
|
|
|
|
void SetCoord(Dbxy pt);
|
|
|
|
|
private:
|
|
|
|
|
void CalPulseCntAndSaveCoord(Dbxy MovePt,Dbxy TargetPt,double &PulseCntX,double &PulseCntY,bool bSaveCoord);
|
|
|
|
|
bool MoveBresenhamAlgorithm(bool bWork,CMotor &MotorX,double PulseCntX,CMotor &MotorY,double PulseCntY);
|
|
|
|
|
void SetMoveDir(Dbxy MovePt,Dbxy TargetPt);
|
|
|
|
|
void SetMoveDir(DIRECTION dir);
|
|
|
|
|
void SaveCoord(int PulseCntX,int PulseCntY);
|
|
|
|
|
|
|
|
|
|
DbRect GetRect();
|
|
|
|
|
Dbxy TheoryCoor2RealCoord(Dbxy pt);
|
|
|
|
|
void OnPlatformMoveStart();
|
|
|
|
|
void OnPlatformMoveEnd();
|
|
|
|
|
void SaveManualMoveDis(double MoveDis,DIRECTION MoveDir);
|
|
|
|
|
Dbxy GetTargetCoord(Dbxy MovePt,Dbxy TargetPt);
|
|
|
|
|
void CheckCoordRange(Dbxy Coord);
|
|
|
|
|
private:
|
|
|
|
|
CMotor &m_MotorX;//X <20><>
|
|
|
|
|
CMotor &m_MotorY;//Y <20><>
|
|
|
|
|
Dbxy m_Coord;//ƽ̨<C6BD><CCA8>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>λ<EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD>)
|
|
|
|
|
Dbxy m_ProductPoint;//ȡ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
bool m_bBresenhamAlgorithm;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ֱ<EFBFBD><D6B1><EFBFBD>㷨<EFBFBD><E3B7A8><EFBFBD>ƶ<EFBFBD>
|
|
|
|
|
bool m_bUsed;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ƽ̨
|
|
|
|
|
bool m_MoveNeedDeviceIni;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD>豸<EFBFBD><E8B1B8>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6>ƶ<EFBFBD>
|
|
|
|
|
double m_MaxMoveDis;//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>mm
|
|
|
|
|
double m_UserMaxMoveDis;//<2F><><EFBFBD><EFBFBD>Աһ<D4B1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>mm
|
|
|
|
|
bool m_bUseMoveRange;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>
|
|
|
|
|
double m_MaxDisL;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
|
|
|
|
|
double m_MaxDisR;//<2F>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
|
|
|
|
|
double m_MaxDisU;//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
|
|
|
|
|
double m_MaxDisD;//<2F>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
|
|
|
|
|
|
|
|
|
|
int m_MoveDelay;//ƽ̨<C6BD>ƶ<EFBFBD><C6B6><EFBFBD>ʱus
|
|
|
|
|
int m_MoveOrder;//<2F>ƶ<EFBFBD>˳<EFBFBD><CBB3> 0:<3A><><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>(Ĭ<><C4AC>) 1:X <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD> 2:Y <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD> (<28><>ҪΪ<D2AA>˱<EFBFBD><CBB1><EFBFBD><EFBFBD>е<EFBFBD><D0B5>豸ײ<E8B1B8><D7B2>ƽ̨)
|
|
|
|
|
|
|
|
|
|
bool m_bSpeedCtrl;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ƽ̨<C6BD>˶<EFBFBD><CBB6>ٶȿ<D9B6><C8BF><EFBFBD>(mm/s)
|
|
|
|
|
|
|
|
|
|
double m_WorkSpeed;//<2F>ӹ<EFBFBD><D3B9>ٶ<EFBFBD>(mm/s)
|
|
|
|
|
double m_MoveSpeed;//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>(mm/s)
|
|
|
|
|
|
|
|
|
|
double m_XY_Angle;//XY <20><><EFBFBD>ļн<C4BC>(360 <20>Ƚ<EFBFBD>)
|
|
|
|
|
bool m_bMoveToRealCoord;//<2F>Ƿ<EFBFBD><C7B7>ƶ<EFBFBD><C6B6><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>,Ӧ<><D3A6>ƽ̨<C6BD>а<EFBFBD>װ<EFBFBD>Ƕȵ<C7B6><C8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
bool m_bUseManualMoveDis;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ֵ)
|
|
|
|
|
bool m_bLockManualMoveDis;//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><CEA2>ֵ
|
|
|
|
|
Dbxy m_ManualMoveDis;//<2F><>¼<EFBFBD><C2BC>ǰ<EFBFBD>ֶ<EFBFBD><EFBFBD><CEA2><EFBFBD><EFBFBD>
|
|
|
|
|
double m_MaxManualMoveDis;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6>ƶ<EFBFBD><C6B6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ֮<CEA7><D6AE>)
|
|
|
|
|
|
|
|
|
|
bool m_InitMotorX;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC>X <20><>
|
|
|
|
|
bool m_InitMotorY;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC>Y <20><>
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern CPlatformXY *gPlatformXY;
|