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.

1087 lines
38 KiB
C++

#include "StdAfx.h"
#include "PlatformXY.h"
#include "LogMgr.h"
#include "PciPortMgr.h"
#include "Propertie.h"
#include "PropertieMgr.h"
#include "AuthorityMgr.h"
#include "GlobalDrawMgr.h"
#include "DrawSimpleShape.h"
#include "ExceptionMsg.h"
#include "ObjComponentMgr.h"
#include "DeviceState.h"
#include "WorkCmdMovePlatformXY.h"
#include "MsgBox.h"
#include "WorkCmdInvoker.h"
#include "MotionCard_PCI1245.h"
#include "WorkCmdSetMotorSpeed.h"
#include "WorkCmdWaitMotorStop.h"
#include "WorkCmdMoveMotor.h"
#include "Program_SZ_XL.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>У׼<D0A3>ļ<EFBFBD>
#define MOTOR_SPEED_FILE_X _T("\\Parameter\\PlatformXY\\MotorSpeedX.txt")
#define MOTOR_SPEED_FILE_Y _T("\\Parameter\\PlatformXY\\MotorSpeedY.txt")
CPlatformXY *gPlatformXY = NULL;
CPlatformXY::CPlatformXY(CMotor &MotorX,CMotor &MotorY)
:m_MotorX(MotorX),m_MotorY(MotorY)
{
m_bBresenhamAlgorithm = false;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><E3B7A8><EFBFBD>ƶ<EFBFBD>
m_bUsed = false;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ƽ̨
m_MaxDisL = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
m_MaxDisR = 0;//<2F>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
m_MaxDisU = 0;//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
m_MaxDisD = 0;//<2F>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>
m_MoveDelay = 200;//ƽ̨<C6BD>ƶ<EFBFBD><C6B6><EFBFBD>ʱus
m_MoveOrder = 0;
m_bSpeedCtrl = false;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ƽ̨<C6BD>˶<EFBFBD><CBB6>ٶȿ<D9B6><C8BF><EFBFBD>(mm/s)
m_WorkSpeed = 40;//<2F>ӹ<EFBFBD><D3B9>ٶ<EFBFBD>(mm/s)
m_MoveSpeed = 40;//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>(mm/s)
m_MoveNeedDeviceIni = true;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><EFBFBD><E8B1B8>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6>ƶ<EFBFBD>
m_XY_Angle = 0;//XY <20><><EFBFBD>ļн<C4BC>(360 <20>Ƚ<EFBFBD>)
m_bMoveToRealCoord = false;//<2F>Ƿ<EFBFBD><C7B7>ƶ<EFBFBD><C6B6><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><><D3A6>ƽ̨<C6BD>а<EFBFBD>װ<EFBFBD>Ƕȵ<C7B6><C8B5><EFBFBD><EFBFBD><EFBFBD>
m_bUseMoveRange = true;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>
m_MaxMoveDis = 10;//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
m_bUseManualMoveDis = true;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>
m_MaxManualMoveDis =5;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6>ƶ<EFBFBD><C6B6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ֮<CEA7><D6AE>)
m_InitMotorX = true;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC>X <20><>
m_InitMotorY = true;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC>Y <20><>
m_bLockManualMoveDis = false;//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>΢<EFBFBD><CEA2>ֵ
m_UserMaxMoveDis = 5;//<2F><><EFBFBD><EFBFBD>Աһ<D4B1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>mm
}
CPlatformXY::~CPlatformXY(void)
{
}
#if 1
CMFCPropertyGridProperty *CPlatformXY::CreatGridProperty()
{
CString PropertyName;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString Description;//<2F><><EFBFBD><EFBFBD>
CString Path = _T("PlatformXY");//<2F>洢·<E6B4A2><C2B7>
CString Name;
//-------------------------------------------------------------------------------//
PropertyName = _T("ƽ̨");
CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName);
//-------------------------------------------------------------------------------//
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_bUsed");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_bUsed);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ʹ<EFBFBD><EFBFBD>ƽ̨");
Description = _T("<EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ƽ̨");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUsed, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MoveNeedDeviceIni");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MoveNeedDeviceIni);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>");
Description = _T("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD>ƶ<EFBFBD>ƽ̨");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MoveNeedDeviceIni, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_InitMotorX");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_InitMotorX);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>X <20><>");
Description = _T("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>X <20><>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_InitMotorX, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_InitMotorY");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_InitMotorY);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Y <20><>");
Description = _T("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Y <20><>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_InitMotorY, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MoveDelay");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MoveDelay);
pPropertie->SetType(_PROP_TYPE_INT);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ƽ̨<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>ʱ");
Description = _T("ƽ̨<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ĵȴ<EFBFBD><EFBFBD><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>(<28><>λ:us)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MoveDelay, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_bBresenhamAlgorithm");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_bBresenhamAlgorithm);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ֱ<EFBFBD><EFBFBD><EFBFBD>");
Description = _T("ƽ̨<EFBFBD>ƶ<EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bBresenhamAlgorithm, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_ProductPoint_x");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_ProductPoint.x);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ȡ<EFBFBD>ϵ<EFBFBD>X");
Description = _T("ȡ<EFBFBD>ϵ<EFBFBD>X <20><><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductPoint.x, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_ProductPoint_y");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_ProductPoint.y);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ȡ<EFBFBD>ϵ<EFBFBD>Y");
Description = _T("ȡ<EFBFBD>ϵ<EFBFBD>Y <20><><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductPoint.y, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_bMoveToRealCoord");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_bMoveToRealCoord);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD>ƶ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD>Ƕ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bMoveToRealCoord, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_XY_Angle");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_XY_Angle);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("XY <20><><EFBFBD>н<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>XY <20><><EFBFBD>ļн<C4BC>(360 <20>Ƚ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_XY_Angle, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_bUseManualMoveDis");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_bUseManualMoveDis);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ʹ<EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>λ<EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUseManualMoveDis, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MaxManualMoveDis");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MaxManualMoveDis);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>΢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxManualMoveDis, Description);
pGroup->AddSubItem(p1);
gDevicePropertieMgr.Insert(p1, pPropertie);
}
}
{
CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("ƽ̨<EFBFBD><EFBFBD>Χ"));
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MaxMoveDis");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MaxMoveDis);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD>ֶ<EFBFBD><EFBFBD>ƶ<EFBFBD>ƽ̨һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(mm)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxMoveDis, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_UserMaxMoveDis");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_UserMaxMoveDis);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(mm)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_UserMaxMoveDis, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_bUseMoveRange");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_bUseMoveRange);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ʹ<EFBFBD>÷<EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>Χ");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bUseMoveRange, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MaxDisL");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MaxDisL);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>λ<EFBFBD>ÿ<EFBFBD>ʼX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisL, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MaxDisR");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MaxDisR);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>λ<EFBFBD>ÿ<EFBFBD>ʼX <20><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisR, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MaxDisU");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MaxDisU);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>λ<EFBFBD>ÿ<EFBFBD>ʼY <20><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisU, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MaxDisD");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MaxDisD);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>λ<EFBFBD>ÿ<EFBFBD>ʼY <20><><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxDisD, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
pGroup->AddSubItem(pGroup1);
}
{
CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("<EFBFBD>˶<EFBFBD><EFBFBD>ٶ<EFBFBD>"));
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_bSpeedCtrl");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_bSpeedCtrl);
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("mm/s <20><>ʽ");
Description = _T("<EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><EFBFBD>ƽ̨<EFBFBD>˶<EFBFBD><EFBFBD>ٶȿ<EFBFBD><EFBFBD><EFBFBD>(mm/s)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_bSpeedCtrl, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_WorkSpeed");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_WorkSpeed);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD>ӹ<EFBFBD><EFBFBD>ٶ<EFBFBD>");
Description = _T("<EFBFBD>ӹ<EFBFBD><EFBFBD>ٶ<EFBFBD>(mm/s)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_WorkSpeed, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MoveSpeed");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MoveSpeed);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>(mm/s)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MoveSpeed, Description);
pGroup1->AddSubItem(p);
gDevicePropertieMgr.Insert(p, pPropertie);
}
pGroup->AddSubItem(pGroup1);
}
//-------------------------------------------------------------------------------//
return pGroup;
}
void CPlatformXY::ExportPar(ofstream *pFile)
{
(*pFile)<<"<><C4A3>] [CPlatformXY]------------------------------------------------"<<endl;
(*pFile)<<"<>ϵ<EFBFBD>X][m_ProductPoint.x] = "<<m_ProductPoint.x<<endl;
(*pFile)<<"<>ϵ<EFBFBD>Y][m_ProductPoint.y] = "<<m_ProductPoint.y<<endl;
}
//<2F><>ȡƽ̨<C6BD><CCA8>Χ
DbRect CPlatformXY::GetRect()
{
return DbRect(m_MaxDisL*(-1),m_MaxDisR,m_MaxDisU,m_MaxDisD*(-1));
}
void CPlatformXY::Draw(CDC* pDC)
{
if(gDraw->IsShowPlatformPos())
{
DrawRect(pDC,gDraw->GetSelObjectPen(),GetRect(),false);
}
}
#endif
#if 1
void CPlatformXY::WriteWorkFileExt(vector<CLab> &LabVec)
{
//<2F><>ȡҲҪ<D2B2><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
LabVec.push_back(CLab(LAB_NULL,m_WorkSpeed));//<2F>ӹ<EFBFBD><D3B9>ٶ<EFBFBD>
LabVec.push_back(CLab(LAB_NULL,m_MoveSpeed));//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
}
void CPlatformXY::ReadWorkFile(CLabVecRang &LabVecRang)
{
int idx = LabVecRang.GetStart()+1;
m_WorkSpeed = LabVecRang.GetDouble(idx++);
m_MoveSpeed = LabVecRang.GetDouble(idx++);
AdjustPlatformSpeed();
}
#endif
Dbxy CPlatformXY::GetCoord()
{
return gMotionCard_PCI1245->GetPlatformXYCoord();
}
//У׼ƽ̨<C6BD><CCA8><EFBFBD>˶<EFBFBD><CBB6>ٶ<EFBFBD>
void CPlatformXY::AdjustPlatformSpeed()
{
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浽PulseCntX <20><>PulseCntY <20><><EFBFBD>ұ<EFBFBD><D2B1>浱ǰ<E6B5B1><C7B0><EFBFBD><EFBFBD>
//Ϊ<>˱<EFBFBD><CBB1><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//MovePt <20><>TargetPt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ԭ<CCA8><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CPlatformXY::CalPulseCntAndSaveCoord(Dbxy MovePt,Dbxy TargetPt,double &PulseCntX,double &PulseCntY,bool bSaveCoord)
{
Dbxy Coord = GetCoord();
double OnePulseDisX = m_MotorX.GetOnePulseDis();
double OnePulseDisY = m_MotorY.GetOnePulseDis();
//<2F><><EFBFBD><EFBFBD><E3B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double CntX = (TargetPt.x - (MovePt.x+Coord.x))/OnePulseDisX;
double CntY = (TargetPt.y - (MovePt.y+Coord.y))/OnePulseDisY;
PulseCntX = (abs(CntX));//<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
PulseCntY = (abs(CntY));
//<2F><><EFBFBD>浱ǰ<E6B5B1><C7B0><EFBFBD><EFBFBD>------------------------------------------------------------------------
/*ע<><D7A2><EFBFBD><EFBFBD>Ӧ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>,
TargetPt ֻ<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼ȷ<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>TargetPt <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
double ValX = abs(CntX);
if(CntX>=1)//floor<6F><72><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Coord.x += (floor(ValX)*OnePulseDisX);
}
else if(CntX<=-1)
{
Coord.x -= (floor(ValX)*OnePulseDisX);
}
double ValY = abs(CntY);
if(CntY>=1)//floor<6F><72><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Coord.y += (floor(ValY)*OnePulseDisY);
}
else if(CntY<=-1)
{
Coord.y -= (floor(ValY)*OnePulseDisY);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>ȫ<EFBFBD><C8AB>------------------------------------------
if(m_bUseMoveRange && IsPointInRect(Coord,GetRect())==false)
{
CString str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>!");
CExceptionMsg Msg;
Msg.SetMsg(str);
throw Msg;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
if(bSaveCoord)//<2F><>Ϊƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ֵ
{
SetCoord(Coord);
}
}
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ƽ̨ʱ)
void CPlatformXY::SaveCoord(int PulseCntX,int PulseCntY)
{
Dbxy Coord = GetCoord();
double OnePulseDisX = m_MotorX.GetOnePulseDis();
double OnePulseDisY = m_MotorY.GetOnePulseDis();
Coord.x += (PulseCntX*OnePulseDisX);
Coord.y += (PulseCntY*OnePulseDisY);
SetCoord(Coord);
}
//ƽ̨<C6BD>ƶ<EFBFBD><C6B6><EFBFBD>Bresenham <20>㷨(<28>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EBB3A4><EFBFBD><EFBFBD>ÿ<EFBFBD>ζ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>̵<EFBFBD><CCB5><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>)
//MotorX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ֻ<>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><E5A3AC><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
bool CPlatformXY::MoveBresenhamAlgorithm(bool bWork,CMotor &MotorX,double PulseCntX,CMotor &MotorY,double PulseCntY)
{
double error = 2*PulseCntY - PulseCntX;
bool bSendY = false;
int TallyY = 0;//ͳ<><CDB3>Y <20>ĸ<EFBFBD><C4B8><EFBFBD><><D6BB>Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
for(double i=0;i<PulseCntX;i++)
{
if(MotorX.MoveOnePluse(MotorX.GetDelay(bWork))==false)
{
return false;//ײ<><D7B2><EFBFBD><EFBFBD>λ
}
if(bSendY)
{
if(MotorY.MoveOnePluse(MotorY.GetDelay(bWork))==false)
{
return false;//ײ<><D7B2><EFBFBD><EFBFBD>λ
}
bSendY = false;
TallyY++;
}
if(error>=0)
{
bSendY = true;
error = error - 2*PulseCntX;
}
error = error +2*PulseCntY;
}
//x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>׼<EFBFBD><D7BC>
//Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܻ<EFBFBD><DCBB><EFBFBD>һ<EFBFBD><D2BB>
if(TallyY<PulseCntY)
{
CString str = "[Bresenham <20><EFBFBD><E3B7A8><EFBFBD><EFBFBD><E5B2B9>]";
gLogMgr->WriteDebugLog(str);
if(MotorY.MoveOnePluse(MotorY.GetDelay(bWork))==false)
{
return false;//ײ<><D7B2><EFBFBD><EFBFBD>λ
}
}
return true;
}
//<2F>ƶ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>(dis <20>ĵ<EFBFBD>λ<EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD>)
bool CPlatformXY::MoveDistance(double dis,DIRECTION dir,bool bSaveCoord)
{
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
Dbxy MovePt = GetCoord();
Dbxy TargetPt;
switch(dir)
{
case _DIR_L:
MovePt.x -= dis;
break;
case _DIR_R:
MovePt.x += dis;
break;
case _DIR_U:
MovePt.y += dis;
break;
case _DIR_D:
MovePt.y -= dis;
break;
default:
return true;
break;
}
return Move(false,TargetPt,MovePt,bSaveCoord);
}
//<2F>ƶ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>)
bool CPlatformXY::MovePulseCnt(int Cnt,DIRECTION dir)
{
if(Cnt<=0)
return true;
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
SetMoveDir(dir);
int PulseCntX = 0;
int PulseCntY = 0;
switch(dir)
{
case _DIR_L:
PulseCntX = Cnt*(-1);
break;
case _DIR_R:
PulseCntX = Cnt;
break;
case _DIR_U:
PulseCntY = Cnt;
break;
case _DIR_D:
PulseCntY = Cnt*(-1);
break;
default:
break;
}
if(PulseCntX<0)
{
PulseCntX *= -1;
}
if(PulseCntY<0)
{
PulseCntY *= -1;
}
//ƽ̨<C6BD>ƶ<EFBFBD>
m_MotorX.MoveByPluse((double)PulseCntX,false);
m_MotorY.MoveByPluse((double)PulseCntY,false);
return true;
}
void CPlatformXY::SetMoveDir(DIRECTION dir)
{
switch(dir)
{
case _DIR_L:
m_MotorX.SetDir(false);
break;
case _DIR_R:
m_MotorX.SetDir(true);
break;
case _DIR_U:
m_MotorY.SetDir(true);
break;
case _DIR_D:
m_MotorY.SetDir(false);
break;
default:
return;
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ķ<EFBFBD><C4B7><EFBFBD>
void CPlatformXY::SetMoveDir(Dbxy MovePt,Dbxy TargetPt)
{
Dbxy Coord = GetCoord();
bool bDirX = false;//<2F><><EFBFBD><EFBFBD>
bool bDirY = false;//<2F><><EFBFBD><EFBFBD>
if((TargetPt.x - (MovePt.x+Coord.x))>0)
{
bDirX = true;
}
if((TargetPt.y - (MovePt.y+Coord.y))>0)
{
bDirY = true;
}
if(!gLogMgr->IsDebuging())//<2F><><EFBFBD><EFBFBD>״̬
{
m_MotorX.SetDir(bDirX);
m_MotorY.SetDir(bDirY);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pt ת<><D7AA>Ϊƽ̨<C6BD><CCA8>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbxy CPlatformXY::TheoryCoor2RealCoord(Dbxy pt)
{
double Angle = _360ToAngle(m_XY_Angle);
Dbxy CenterPt(0,0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
Dbxy RealPt = RotatoPt(pt,Angle,CenterPt);
return RealPt;
}
//<2F>ƶ<EFBFBD>MovePt <20>㵽TargetPt <20><>(bSaveCoord <20><>ʾ<EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA>¼<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C4AC><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>¼<EFBFBD><C2BC>))
//MovePt <20><>TargetPt<50><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ԭ<CCA8><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//bWork <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>
bool CPlatformXY::Move(bool bWork,Dbxy MovePt,Dbxy TargetPt,bool bSaveCoord)
{
if(!m_bUsed)
return true;
//<2F>ƶ<EFBFBD>ǰ
OnPlatformMoveStart();
//<2F><>ʵ<EFBFBD><CAB5>λ<EFBFBD><CEBB><EFBFBD>ƶ<EFBFBD>
if(m_bMoveToRealCoord)
{
//MovePt <20><>TargetPt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>ƽ̨<C6BD>нǶ<D0BD>ʱƽ̨<C6BD>ƶ<EFBFBD><C6B6><EFBFBD>λ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>ƫ<EFBFBD><C6AB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pt ת<><D7AA>Ϊƽ̨<C6BD><CCA8>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MovePt = TheoryCoor2RealCoord(MovePt);
TargetPt = TheoryCoor2RealCoord(TargetPt);
}
//ʹ<><CAB9><EFBFBD>л<EFBFBD><D0BB>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>ƽ̨
if(gMotionCard_PCI1245->IsbUsed())
{
Dbxy Coord = GetTargetCoord(MovePt,TargetPt);//ƽ̨<C6BD><CCA8>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>ȫ<EFBFBD><C8AB>(<28>׳<EFBFBD><D7B3>쳣)
CheckCoordRange(Coord);
Coord = gMotionCard_PCI1245->MovePlatformXY(Coord);
#if 0
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
if(bSaveCoord)//<2F><>Ϊƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ֵ
{
m_Coord = Coord;
//֪ͨ<CDA8>۲<EFBFBD><DBB2><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF>
NotifyObservers();
}
#endif
}
OnPlatformMoveEnd();
return true;
}
//<2F><><EFBFBD>õ<EFBFBD>ǰλ<C7B0><CEBB>Ϊƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
void CPlatformXY::SetCurPosOrigin()
{
Dbxy pt(0,0);
gMotionCard_PCI1245->SetCurGpIdx(0);
SetCoord(pt);
//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
gMotionCard_PCI1245->SetCurGpIdx(1);
SetCoord(pt);
CString str1 = _T("[func][SetCurPosOrigin] [<5B><><EFBFBD>õ<EFBFBD>ǰλ<C7B0><CEBB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>]");
gLogMgr->WriteDebugLog(str1);
}
Dbxy CPlatformXY::GetTargetCoord(Dbxy MovePt,Dbxy TargetPt)
{
Dbxy Coord;//ƽ̨<C6BD><CCA8>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Coord.x = TargetPt.x - MovePt.x;
#ifdef __CUSTOM_SW_XL__
Coord.y = MovePt.y -TargetPt.y;
#else
Coord.y = TargetPt.y - MovePt.y;
#endif
return Coord;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>ȫ<EFBFBD><C8AB>(<28>׳<EFBFBD><D7B3>쳣)
void CPlatformXY::CheckCoordRange(Dbxy Coord)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>ȫ<EFBFBD><C8AB>------------------------------------------
if(m_bUseMoveRange && IsPointInRect(Coord,GetRect())==false)
{
CString str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>!");
CExceptionMsg Msg;
Msg.SetMsg(str);
throw Msg;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
void CPlatformXY::SetCoord(Dbxy pt)
{
m_Coord = pt;
gMotionCard_PCI1245->SetCoord(pt);
//֪ͨ<CDA8>۲<EFBFBD><DBB2><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF>
NotifyObservers();
}
//<2F>ƶ<EFBFBD><C6B6><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CPlatformXY::MoveToPt(Dbxy MovePt,Dbxy TargetPt)
{
gLogMgr->WriteDebugLog("MovePt.x","",MovePt.x);
gLogMgr->WriteDebugLog("MovePt.y","",MovePt.y);
Move(false,MovePt,TargetPt);
}
//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ƽ̨
void CPlatformXY::ManualMovePlatForm(bool bMoveByDis,double MoveDis,DIRECTION MoveDir)
{
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>ֹ<EFBFBD>ƶ<EFBFBD>
if(gProgram_SZ_XL->IsbAutoWorking())
return;
//<2F>dz<EFBFBD><C7B3><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
if(gAuthorityMgr->CheckAuthority(_FACTORY,false)==false)
{
if(fabs(MoveDis)>m_UserMaxMoveDis)
{
CString s;
s.Format("һ<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>%.3f",m_UserMaxMoveDis);
CMsgBox MsgBox;
MsgBox.Show(s);
return;
}
}
CDeviceState &DeviceState = CDeviceState::GetInstance();
bool IniState = DeviceState.IsDeviceIni();
DeviceState.SetIniState(true);//ǿ<>Ƴ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ƽ̨
if(IsMoveNeedDeviceIni())
{
if(DeviceState.IsDeviceIni()==false)
{
CMsgBox MsgBox;
MsgBox.Show("<EFBFBD>豸δ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return;
}
}
if(bMoveByDis)
{
double Max = m_MaxMoveDis;//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
if(MoveDis>Max)
{
CMsgBox MsgBox;
CString str;
str.Format(_T("ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>%f (mm)"),Max);
MsgBox.Show(str);
return;
}
}
CWorkCmdContainer CmdContainer;
//<2F><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ٶ<EFBFBD>
{
CWorkCmdSetMotorSpeed *pCmd = new CWorkCmdSetMotorSpeed();
pCmd->SetbSetMotorX();
pCmd->SetbSetMotorX2();
pCmd->SetbSetMotorY();
pCmd->SetSpeedType(_SpeedType_Move);
CmdContainer.AddCmd(pCmd);
}
//<2F>ƶ<EFBFBD>
{
CMotor *pMotor = CMotor::GetMotor(MOTOR_Y);
if(MoveDir == _DIR_L ||MoveDir == _DIR_R )
{
if(gMotionCard_PCI1245->GetCurGpIdx()==0)
pMotor = CMotor::GetMotor(MOTOR_X);
else
pMotor = CMotor::GetMotor(MOTOR_X2);
}
if(MoveDir == _DIR_L || MoveDir == _DIR_D)
MoveDis *= (-1);
CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(*pMotor,MoveDis);
pCmd->SetMoveFlg(true);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
CmdContainer.AddCmd(pCmd);
}
//<2F>ȴ<EFBFBD><C8B4>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
{
CWorkCmdWaitMotorStop *pCmd = new CWorkCmdWaitMotorStop();
if(MoveDir == _DIR_L ||MoveDir == _DIR_R )
{
if(gMotionCard_PCI1245->GetCurGpIdx()==0)
pCmd->SetbWaitMotorX();
else
pCmd->SetbWaitMotorX2();
}
else
{
pCmd->SetbWaitMotorY();
}
CmdContainer.AddCmd(pCmd);
}
CWorkCmdInvoker WorkInvoker;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WorkInvoker.Excute(CmdContainer);
//֪ͨ<CDA8>۲<EFBFBD><DBB2><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF>
NotifyObservers();
DeviceState.SetIniState(IniState);//<2F>ָ<EFBFBD><D6B8><EFBFBD>ʼ<EFBFBD><CABC>״̬
}
//ƽ̨<C6BD>Ƿ<EFBFBD><C7B7><EFBFBD>ȡ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
bool CPlatformXY::IsAtProductPoint()
{
return (m_ProductPoint==m_Coord);
}
//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Ϊȡ<CEAA>ϵ<EFBFBD>
void CPlatformXY::SetCurPosAsProductPt()
{
CMsgBox MsgBox;
if(MsgBox.ConfirmOkCancel("<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD>Ϊȡ<EFBFBD>ϵ<EFBFBD>?"))
{
m_ProductPoint = m_Coord;
gLogMgr->WriteDebugLog("Fuc---->SetCurPosAsProductPt");
}
}
//<2F>ƶ<EFBFBD><C6B6><EFBFBD>ȡ<EFBFBD>ϵ<EFBFBD>
void CPlatformXY::MoveToWorkPt()
{
CDeviceState &DeviceState = CDeviceState::GetInstance();
if(!DeviceState.CheckInitState())
return;
vector<CString> CmdVec;
CmdVec.push_back(_T("CmdName[CMD_PLATFORM_MOVE] Par1[TO_WORK_PT]"));
CWorkCmdInvoker Invoker;
Invoker.ExcuteCmd(CmdVec);
}
void CPlatformXY::MoveToOriginPt()
{
CDeviceState &DeviceState = CDeviceState::GetInstance();
if(!DeviceState.CheckInitState())
return;
vector<CString> CmdVec;
CmdVec.push_back(_T("CmdName[CMD_PLATFORM_MOVE] Par1[TO_ORIGIN]"));
CWorkCmdInvoker Invoker;
Invoker.ExcuteCmd(CmdVec);
}
//<2F><>ʼ<EFBFBD><CABC>ƽ̨(bConfirm <20><>ʾ<EFBFBD>Ƿ񵯳<C7B7><F1B5AFB3><EFBFBD>ʾ)
void CPlatformXY::IniPlat(bool bConfirm)
{
if(bConfirm)
{
CMsgBox MsgBox;
if(MsgBox.ConfirmOkCancel(_T("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ƽ̨?"))==false)
return;
}
OnPlatformMoveStart();
vector<CString> CmdVec;
if(m_InitMotorX)
{
CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_MACHINE_ORIGIN] Par1[X]"));
}
if(m_InitMotorY)
{
CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_MACHINE_ORIGIN] Par1[Y]"));
CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_OFFSET_POS] Par1[Y]"));
}
if(m_InitMotorX)
{
CmdVec.push_back(_T("CmdName[CMD_MOTOR_TO_OFFSET_POS] Par1[X]"));
}
CmdVec.push_back(_T("CmdName[CMD_DEVICE_PAR_RESET]"));
CWorkCmdInvoker Invoker;
Invoker.ExcuteCmd(CmdVec);
OnPlatformMoveEnd();
}
//<2F>ƶ<EFBFBD>ƽ̨֮ǰ<D6AE>IJ<EFBFBD><C4B2><EFBFBD>(<28><>Ҫ<EFBFBD><D2AA>Ҫͣ<D2AA><CDA3>ռcpu <20>Ĺ<EFBFBD><C4B9><EFBFBD>)
void CPlatformXY::OnPlatformMoveStart()
{
}
void CPlatformXY::OnPlatformMoveEnd()
{
}
#if 1
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>΢<EFBFBD><CEA2><EFBFBD><EFBFBD>
void CPlatformXY::ResetManualMoveDis()
{
m_ManualMoveDis.x = m_ManualMoveDis.y = 0;
}
//<2F><>¼<EFBFBD>ֶ<EFBFBD><D6B6>ƶ<EFBFBD><C6B6><EFBFBD>
void CPlatformXY::SaveManualMoveDis(double MoveDis,DIRECTION MoveDir)
{
if(m_bLockManualMoveDis)//<2F><><EFBFBD><EFBFBD>״̬
return;
switch(MoveDir)
{
case _DIR_L:
m_ManualMoveDis.x -= MoveDis;
break;
case _DIR_R:
m_ManualMoveDis.x += MoveDis;
break;
case _DIR_U:
m_ManualMoveDis.y += MoveDis;
break;
case _DIR_D:
m_ManualMoveDis.y -= MoveDis;
break;
default:
return;
break;
}
//<2F><>֤<EFBFBD><D6A4><EFBFBD>޶<EFBFBD><DEB6><EFBFBD>Χ֮<CEA7><D6AE>
if(m_ManualMoveDis.x>m_MaxManualMoveDis)
m_ManualMoveDis.x = m_MaxManualMoveDis;
else if(m_ManualMoveDis.x < m_MaxManualMoveDis*(-1))
m_ManualMoveDis.x = m_MaxManualMoveDis*(-1);
if(m_ManualMoveDis.y>m_MaxManualMoveDis)
m_ManualMoveDis.y = m_MaxManualMoveDis;
else if(m_ManualMoveDis.y < m_MaxManualMoveDis*(-1))
m_ManualMoveDis.y = m_MaxManualMoveDis*(-1);
}
#endif
//<2F><>ȡXY <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ľ<EFBFBD><C4BE><EFBFBD>
Dbxy CPlatformXY::GetMotorXYOnePulseDis()
{
Dbxy MotorXYOnePulseDis;
MotorXYOnePulseDis.x = m_MotorX.GetOnePulseDis();
MotorXYOnePulseDis.y = m_MotorY.GetOnePulseDis();
return MotorXYOnePulseDis;
}