forked from epics_driver_modules/motorBase
Implement ACRAxis::setPosition; fix bug in ACRAxis::stop
This commit is contained in:
@@ -202,17 +202,7 @@ asynStatus ACRController::writeFloat64(asynUser *pasynUser, epicsFloat64 value)
|
||||
/* Set the parameter and readback in the parameter library. */
|
||||
status = setDoubleParam(pAxis->axisNo_, function, value);
|
||||
|
||||
if (function == motorPosition_)
|
||||
{
|
||||
sprintf(outString_, "%s RES %f", pAxis->axisName_, value/pAxis->pulsesPerUnit_);
|
||||
status = writeController();
|
||||
sprintf(outString_, "%s JOG REN", pAxis->axisName_);
|
||||
status = writeController();
|
||||
asynPrint(pasynUser, ASYN_TRACE_FLOW,
|
||||
"%s:%s: Set axis %d to position %d\n",
|
||||
driverName, functionName, pAxis->axisNo_, value);
|
||||
}
|
||||
else if (function == ACRJerk_)
|
||||
if (function == ACRJerk_)
|
||||
{
|
||||
sprintf(outString_, "%s JOG JRK %f", pAxis->axisName_, value);
|
||||
status = writeController();
|
||||
@@ -295,21 +285,6 @@ asynStatus ACRController::profileMove(asynUser *pasynUser, int npoints, double p
|
||||
return asynError;
|
||||
}
|
||||
|
||||
asynStatus ACRAxis::stop(double acceleration )
|
||||
{
|
||||
ACRController *pC = getController();
|
||||
asynStatus status;
|
||||
static const char *functionName = "stopAxis";
|
||||
|
||||
sprintf(pC->outString_, "%s JOG OFF", axisName_);
|
||||
status = pC->writeReadController();
|
||||
|
||||
asynPrint(pasynUser_, ASYN_TRACE_FLOW,
|
||||
"%s:%s: Set axis %d to stop, status=%d\n",
|
||||
driverName, functionName, axisNo_, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
asynStatus ACRController::writeController()
|
||||
{
|
||||
return writeController(outString_, ACR_TIMEOUT);
|
||||
@@ -414,6 +389,33 @@ asynStatus ACRAxis::moveVelocity(double minVelocity, double maxVelocity, double
|
||||
return status;
|
||||
}
|
||||
|
||||
asynStatus ACRAxis::stop(double acceleration )
|
||||
{
|
||||
ACRController *pC = getController();
|
||||
asynStatus status;
|
||||
static const char *functionName = "stopAxis";
|
||||
|
||||
sprintf(pC->outString_, "%s JOG OFF", axisName_);
|
||||
status = pC->writeController();
|
||||
|
||||
asynPrint(pasynUser_, ASYN_TRACE_FLOW,
|
||||
"%s:%s: Set axis %d to stop, status=%d\n",
|
||||
driverName, functionName, axisNo_, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
asynStatus ACRAxis::setPosition(double position)
|
||||
{
|
||||
ACRController *pC = getController();
|
||||
asynStatus status;
|
||||
|
||||
sprintf(pC->outString_, "%s RES %f", axisName_, position/pulsesPerUnit_);
|
||||
status = pC->writeController();
|
||||
sprintf(pC->outString_, "%s JOG REN", axisName_);
|
||||
status = pC->writeController();
|
||||
return status;
|
||||
}
|
||||
|
||||
ACRController* ACRAxis::getController()
|
||||
{
|
||||
return static_cast<ACRController*>(asynMotorAxis::getController());
|
||||
|
||||
Reference in New Issue
Block a user