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.

52 lines
1.4 KiB
C++

#include "GugaoCardManage.h"
GugaoCardManage* GugaoCardManage::m_instance = NULL;
CMotorDriver* GugaoCardManage::m_motorDriver = NULL;
bool GugaoCardManage::m_isInitCard = false;
GugaoCardManage::GugaoCardManage()
{
}
GugaoCardManage::~GugaoCardManage()
{
}
void GugaoCardManage::InitAllAxisParam()
{
m_motorDriver->ClearAllAxis();
for (auto& iter : IniRreadWrite::GetInstance()->m_allAxisVec)
{
MotorAttr motorAttrObj;
motorAttrObj.AxisId(iter.id);
motorAttrObj.Vel(iter.workMoveSpeed);
motorAttrObj.Acc(iter.workAcc);
motorAttrObj.Dec(iter.workDec);
motorAttrObj.ReturnAcc(iter.homeAcc);
motorAttrObj.ReturnDec(iter.homeDec);
motorAttrObj.ReturnHomeMode(iter.homeModel);
motorAttrObj.ReturnHomeStartVel(iter.homeStartSpeed);
motorAttrObj.ReturnHomeEndVel(iter.homeEndSpeed);
motorAttrObj.PositiveLimit(iter.positiveLimit);
motorAttrObj.NegativeLimit(iter.negativeLimit);
m_motorDriver->AddMotor(motorAttrObj);
}
}
void GugaoCardManage::AbsMove(int motorId, double pos, bool waitFinished)
{
auto m_motor = GugaoCardManage::GetInstance()->m_motor;
auto motorObj = std::find_if((*m_motor).begin(), (*m_motor).end(), [&](const MotorAttr &obj)
{
return obj.AxisId() == motorId;
});
if (motorObj == (*m_motor).end())
{
return ;
}
GugaoCardManage::GetInstance()->AbsMove(motorId, motorObj->PulseTo1mm(), pos, motorObj->Acc(), motorObj->Dec(), motorObj->Vel(), waitFinished);
}