Implement ACRAxis::setPosition; fix bug in ACRAxis::stop

This commit is contained in:
MarkRivers
2011-03-29 21:27:10 +00:00
parent 81bae89d87
commit 4c3e959420
+28 -26
View File
@@ -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());