|
|
|
|
#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;
|
|
|
|
|
}
|
|
|
|
|
|