- Fixed a bug which caused the SICServer to die when a socket was broken.
- Fixed many things in DIFRAC subsystem: * Recoded tcentr.f etc so that the course centering will work and will not go into an endless loop. * fixed boundary overwrites which occurred when yesno or alfnum where uset to get a single character and several were given. * Addeded documentation for DIFRAC - Added tcl-files which support the WWW status system
This commit is contained in:
32
drive.c
32
drive.c
@ -51,7 +51,7 @@
|
||||
#include "splitter.h"
|
||||
#include "status.h"
|
||||
#include "devexec.h"
|
||||
|
||||
#include "motor.h"
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int Drive(SConnection *pCon, SicsInterp *pInter, char *name, float fNew)
|
||||
@ -128,7 +128,7 @@
|
||||
|
||||
/* wait for finish */
|
||||
iRet = Wait4Success(GetExecutor());
|
||||
fPos = pInt->GetValue(pDum,pCon);
|
||||
fPos = pInt->GetValue(pDum,pCon);
|
||||
if(iRet == DEVINT)
|
||||
{
|
||||
if(SCGetInterrupt(pCon) == eAbortOperation)
|
||||
@ -250,6 +250,27 @@
|
||||
pObjectDescriptor pDes = NULL;
|
||||
pIDrivable pInt = NULL;
|
||||
Dummy *pDum = NULL;
|
||||
pMotor pMot = NULL;
|
||||
float fPos;
|
||||
int iRet;
|
||||
|
||||
/*
|
||||
treat motors separatetly in order to correct for zero points
|
||||
Sighh.........
|
||||
*/
|
||||
pMot = FindMotor(pSics,name);
|
||||
if(pMot != NULL)
|
||||
{
|
||||
iRet = MotorGetSoftPosition(pMot,pCon,&fPos);
|
||||
if(iRet)
|
||||
{
|
||||
return fPos;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -999.;
|
||||
}
|
||||
}
|
||||
|
||||
pObject = FindCommand(pSics,name);
|
||||
if(pObject)
|
||||
@ -341,11 +362,12 @@
|
||||
SCWrite(pCon,pBueffel,eError);
|
||||
ClearExecutor(GetExecutor());
|
||||
SetStatus(eOld);
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
else if(iRet == DEVINT)
|
||||
{
|
||||
SCWrite(pCon,"Driving Interrupted",eError);
|
||||
{
|
||||
sprintf(pBueffel,"Driving Interrupted!",argv[0]);
|
||||
SCWrite(pCon,pBueffel,eError);
|
||||
ClearExecutor(GetExecutor());
|
||||
SetStatus(eOld);
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user